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ć?

questionAnswers(2)

yourAnswerToTheQuestion