我无法将图像资源转换为字节 []。
例如,我有以下资源:
pack://application:,,,/AppName;component/Assets/Images/sampleimage.jpg
在我的程序中。如何将其转换为字节 []。
我试过使用 BitMapImage,但它的 ImageSource 在初始化后最终为空。
这似乎有效:
var info = Application.GetResourceStream(uri);
var memoryStream = new MemoryStream();
info.Stream.CopyTo(memoryStream);
return memoryStream.ToArray();
BitmapSource
将 a 转换为 a的一般解决方案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());