WPF - 使用JpegBitmapDecoder将文件转换为Byte []到BitmapSource

时间:2011-08-25 08:51:48

标签: wpf image bitmapsource varbinarymax

我需要读取一个jpg文件,然后在一个Image控件中显示它。 以下工作完美:

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 []。我该怎么做?

1 个答案:

答案 0 :(得分:4)

JpegBitmapDecoder有一个second constructor,可以接受Stream。只需传入包含MemoryStream

byte[]即可
using(var stream = new MemoryStream(yourByteArray))
{
    decoder = new JpegBitmapDecoder(stream,
                                    BitmapCreateOptions.PreservePixelFormat,
                                    BitmapCacheOption.OnLoad);
}