出来るのかにビットマップからサーバー?
-
26-09-2019 - |
質問
を作って対応したアプリケーションが多用されています。の申請を取得します画像のサーバーから、ダウンロードしています。後に多くの画像のビットマップの例外を返しますが、わからないどのように解決するのか。ここでは私の機能をダウンロードの画像:
public static Bitmap getImageFromWholeURL(String sURL)
{
HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(sURL);
myRequest.Method = "GET";
// If it does not exist anything on the url, then return null
try
{
HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(myResponse.GetResponseStream());
myResponse.Close();
return bmp;
}
catch (Exception e)
{
return null;
}
}
誰でもできるので教えてくれるので助かります。感謝。
解決
「多くの画像」と密接メモリ不足に関連付けられているのは勿論です。ビットマップは、大規模な取得することができ、それらは非管理対象の仮想メモリーの多くを食べますよ。あなたは賢く、あなたのプログラムを作成し、メモリに少ないビットマップを保存する必要があります。またはファイルに一時的に保存します。必要に応じて、またはそれらを再ダウンロードしてください。そして、適切に廃棄()メソッド、Bitmapクラスのために特に重要とそのリソースをクリーンアップします。
他のヒント
ストリーム、そのディスクへの応答ではなく、メモリに保管してください。そして、あなたの代わりに画像自体の一時的な場所に保存した画像の情報を周りに保つます。
だがこれらのすべてPicturebox(基づくコメントだと思いましょう処分の画像(このブログ いす):
if(myPictureBox.Image != null)
{
myPictureBox.Image.Dispose();
}
myPictureBox.Image = getImageFromWholeURL(url);
としての側面に、メソッド名のうPascalCase、キャメルケースというハンガリーという概念のパラメータとします。
あなたはSystem.Drawing.Bitmapオブジェクトで何をしますか?あなたは、メモリ内にそれらのすべてを保つのですか?そして、あなたがいくつかの点でメモリ不足の例外のうちに買ってあげることは避けられない。
あなたのニーズに基づいて、あなたはいくつかの点で画像を破棄しなければなりません。あなたがそれらを必要としない場合は、フラッシュ内のファイルに格納します。また、小さいサイズのファイルを使用してみます。