2

我无法将图像资源转换为字节 []。

例如,我有以下资源:

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

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

我试过使用 BitMapImage,但它的 ImageSource 在初始化后最终为空。

4

2 回答 2

5

这似乎有效:

var info = Application.GetResourceStream(uri);
var memoryStream = new MemoryStream();
info.Stream.CopyTo(memoryStream);
return memoryStream.ToArray();
于 2013-02-18T05:27:38.540 回答
1

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());
于 2013-02-18T09:25:28.900 回答