Tworzenie WPF BitmapImage z MemoryStream png, gif
Mam problemy z utworzeniemBitmapImage
odMemoryStream
z png i gif bajtów uzyskanych z żądania WWW. Bajty wydają się być pobierane dobrze iBitmapImage
obiekt jest tworzony bez problemu, jednak obraz w rzeczywistości nie jest wyświetlany na moim interfejsie użytkownika. Problem występuje tylko wtedy, gdy pobrany obraz jest typu png lub gif (działa dobrze dla jpeg).
Oto kod, który pokazuje problem:
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;
}
Aby przetestować, czy żądanie WWW poprawnie pobiera bajty, wypróbowałem poniższe polecenie, które zapisuje bajty w pliku na dysku, a następnie ładuje obraz za pomocąUriSource
zamiast aStreamSource
i działa dla wszystkich typów obrazów:
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;
}
Ktoś ma jakieś światło, by świecić?