1

サーバーから画像をダウンロードする C# アプリケーションに取り組んでいます。現在、jpeg 画像では正常に動作していますが、透明な png 画像には透明部分の代わりに白いパッチが追加されます。以下のコードを試しました:

public Image DownloadImage(string _URL)
    {
        Image _tmpImage = null;

        try
        {
            // Open a connection
            System.Net.HttpWebRequest _HttpWebRequest = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(_URL);

            _HttpWebRequest.AllowWriteStreamBuffering = true;

            // You can also specify additional header values like the user agent or the referer: (Optional)
            _HttpWebRequest.UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)";
            _HttpWebRequest.Referer = "http://www.google.com/";

            // set timeout for 20 seconds (Optional)
            _HttpWebRequest.Timeout = 40000;
            _HttpWebRequest.Accept = "image/png,image/*";
            // Request response:
            System.Net.WebResponse _WebResponse = _HttpWebRequest.GetResponse();

            // Open data stream:
            System.IO.Stream _WebStream = _WebResponse.GetResponseStream();

            // convert webstream to image
            _tmpImage = Image.FromStream(_WebStream);

            // Cleanup
            _WebResponse.Close();
            _WebResponse.Close();
        }
        catch (Exception _Exception)
        {
            // Error
            Console.WriteLine("Exception caught in process: {0}", _Exception.ToString());
            return null;
        }

        return _tmpImage;
    }

URLからダウンロードした画像は白いパッチが付いています。透明部分の代わりに白いパッチを追加していると思いますが、どうすればそれを止めることができますか。画像で遊ぶことなく、画像を直接検出して適切な形式でダウンロードする方法はありますか。

私はこれを試しました_HttpWebRequest.Accept = "image/png,image/*"; png画像を受け入れてアスペクト比を維持する必要がありますが、うまくいかないようです。

どんな助けでも大歓迎です。

ありがとう、サントッシュ・ウパダヤイ。

4

2 に答える 2

0

イメージやその他のファイルを C# プログラムからダウンロードする最も簡単な方法は、WebClient クラスの DownloadFile メソッドを使用することです。以下のコードでは、ローカル マシン上に画像のファイル名とパスを作成し、WebClient クラスのインスタンスを作成してから、画像への URL とファイル名とパスを渡す DownloadFile メソッドを呼び出します。

string fileName = string.Format("{0}{1}", tempDirectory, @"\strip.png");
WebClient myWebClient = new WebClient();
myWebClient.DownloadFile(imageUrl, fileName);
于 2016-06-14T23:59:34.367 に答える