Web リクエストから取得した png および gif バイトからBitmapImage
の作成に問題があります。MemoryStream
バイトは正常にダウンロードされたように見え、BitmapImage
オブジェクトは問題なく作成されますが、画像は実際には UI にレンダリングされません。この問題は、ダウンロードした画像のタイプが png または gif の場合にのみ発生します (jpeg では問題なく動作します)。
問題を示すコードは次のとおりです。
var webResponse = webRequest.GetResponse();
var stream = webResponse.GetResponseStream();
if (stream.CanRead)
{
Byte[] buffer = new Byte[webResponse.ContentLength];
stream.Read(buffer, 0, buffer.Length);
var byteStream = new System.IO.MemoryStream(buffer);
BitmapImage bi = new BitmapImage();
bi.BeginInit();
bi.DecodePixelWidth = 30;
bi.StreamSource = byteStream;
bi.EndInit();
byteStream.Close();
stream.Close();
return bi;
}
Web リクエストがバイトを正しく取得していることをテストするために、バイトをディスク上のファイルに保存し、 aUriSource
ではなく aを使用して画像をロードする次のことを試しました。これStreamSource
はすべての画像タイプで機能します。
var webResponse = webRequest.GetResponse();
var stream = webResponse.GetResponseStream();
if (stream.CanRead)
{
Byte[] buffer = new Byte[webResponse.ContentLength];
stream.Read(buffer, 0, buffer.Length);
string fName = "c:\\" + ((Uri)value).Segments.Last();
System.IO.File.WriteAllBytes(fName, buffer);
BitmapImage bi = new BitmapImage();
bi.BeginInit();
bi.DecodePixelWidth = 30;
bi.UriSource = new Uri(fName);
bi.EndInit();
stream.Close();
return bi;
}
誰もが輝く光を持っていますか?