我无法将图片资源转换为byte []。
例如,我有以下资源:
pack://application:,,,/AppName;component/Assets/Images/sampleimage.jpg
在我的程序中。如何将其转换为byte []。
我尝试过使用BitMapImage,但是ImageSource在初始化后最终为null。
答案 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());