我必須轉換BitmapImage的(JPEG內)爲byte []然後回。WPF BitmapImage的 - EndInit()拋出NotSupportedException異常
這裏是我的代碼:
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,但沒有明白,怎麼用它。
感謝您的幫助!
其實,你的代碼工作。也許你以某種方式損壞了你傳遞給ByteArray_To_BitmapImage的緩衝區。也就是說,我建議用BitmapSource(基類)替換BitmapImage,以使您的方法更加可用。爲什麼這個醜陋的主角會強調你的一些標識符? – Clemens 2014-10-16 12:56:32
現場進行了轉換(爲什麼我沒有想到這一點?) - 一切順利! 你說得對,問題在於傳輸字節數組。 而醜陋的前導下劃線只是局部變量的標誌:) – 2014-10-16 13:12:10