2

我需要读取一个 jpg 文件并在图像控件中显示它。以下工作完美:

imgTwo.Source = FetchImage(@"C:\Image075.jpg");

public BitmapSource FetchImage(string URLlink)
{
      JpegBitmapDecoder decoder = null;
      BitmapSource bitmapSource = null;
      decoder = new JpegBitmapDecoder(new Uri(URLlink, UriKind.Absolute), BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.OnLoad);
      bitmapSource = decoder.Frames[0];
      bitmapSource.Freeze();
      return bitmapSource;
}

我的问题是我需要将此图像作为 Byte[] (varbinary(MAX) 保存在数据库中并从那里读取它,而不是像上面那样直接从文件中读取。所以我需要有一个 Byte[] 作为输入到这个函数而不是 URLlink 字符串,或者将 BitmapSource 保存为 Byte[]。我该怎么做?

4

1 回答 1

4

JpegBitmapDecoder第二个构造函数,它接受一个Stream. 只需传入一个MemoryStream包含您的byte[]

using(var stream = new MemoryStream(yourByteArray))
{
    decoder = new JpegBitmapDecoder(stream,
                                    BitmapCreateOptions.PreservePixelFormat,
                                    BitmapCacheOption.OnLoad);
}
于 2011-08-25T08:54:28.947 回答