我必须将 BitmapImage (内部JPEG)转换为byte [] ,然后返回。
这是我的代码:
using System.IO;
using System.Windows.Media.Imaging;
public class CImageConverter
{
//
public BitmapImage ByteArray_To_BitmapImage(byte[] _binaryData)
{
BitmapImage _bitmapImage = new BitmapImage();
//
_bitmapImage.BeginInit();
_bitmapImage.CacheOption = BitmapCacheOption.OnLoad;
_bitmapImage.StreamSource = new MemoryStream(_binaryData);
_bitmapImage.EndInit();
//
return _bitmapImage;
}
//
public byte[] BitmapImage_To_ByteArray(BitmapImage _bitmapImage)
{
byte[] bytes;
//
using(MemoryStream ms = new MemoryStream())
{
JpegBitmapEncoder encoder = new JpegBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(_bitmapImage));
encoder.Save(ms);
bytes = ms.ToArray();
}
//
return bytes;
}
}
似乎 BitmapImage_To_ByteArray 正常工作。
但 ByteArray_To_BitmapImage 在 EndInit()方法中抛出 NotSupportedException 。
消息是(用网络翻译翻译):
无法找到适合的图像处理组件 完成此操作。
我在互联网上发现了类似的问题,但答案不起作用。通常的答案是“我尝试了你的代码 - 我的一切工作正常。”
我还发现了this suggestion,但没有理解,如何使用它。
感谢您的帮助!
答案 0 :(得分:0)
public BitmapImage ToImage(byte[] array)
{
using (var ms = new System.IO.MemoryStream(array))
{
var image = new BitmapImage();
image.BeginInit();
image.CacheOption = BitmapCacheOption.OnLoad; // here
image.StreamSource = ms;
image.EndInit();
return image;
}
}
你试过这个吗?