将资源转换为byte []

时间:2013-02-18 05:00:01

标签: c# wpf

我无法将图片资源转换为byte []。

例如,我有以下资源:

pack://application:,,,/AppName;component/Assets/Images/sampleimage.jpg

在我的程序中。如何将其转换为byte []。

我尝试过使用BitMapImage,但是ImageSource在初始化后最终为null。

2 个答案:

答案 0 :(得分:5)

这似乎有效:

var info = Application.GetResourceStream(uri);
var memoryStream = new MemoryStream();
info.Stream.CopyTo(memoryStream);
return memoryStream.ToArray();

答案 1 :(得分:1)

BitmapSource转换为byte[]的一般解决方案如下所示:

public byte[] GetImageBuffer(BitmapSource bitmap, BitmapEncoder encoder)
{
    encoder.Frames.Add(BitmapFrame.Create(bitmap));

    using (var stream = new MemoryStream())
    {
        encoder.Save(stream);
        return stream.ToArray();
    }
}

您可以像下面所示使用它,使用WPF中可用的任何BitmapEncoder

var uri = new Uri("pack://application:,,,/AppName;component/Assets/Images/sampleimage.jpg");
var bitmap = new BitmapImage(uri);
var buffer = GetImageBuffer(bitmap, new JpegBitmapEncoder());