我一直在解決這個問題一段時間。我從我的數據庫中獲取圖像作爲byte [],我想將其轉換爲WritableBitmap,以便我可以使用綁定將其顯示在我的xaml頁面上。字節數組到WriteableBitmap圖像IValueConverter WP7
我使用這個:
public class ImageConverter : IValueConverter
{
/// <summary>
/// Converts a Jpeg byte array into a WriteableBitmap
/// </summary>
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value is byte[])
{
MemoryStream stream = new MemoryStream((Byte[])value);
WriteableBitmap bmp = new WriteableBitmap(200, 200);
bmp.LoadJpeg(stream);
return bmp;
}
else
return null;
}
/// <summary>
/// Converts a WriteableBitmap into a Jpeg byte array.
/// </summary>
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
的第一個問題是,這是行不通的。它拋出一個未指定的異常,當它碰到bmp.LoadJpeg(stream);
第二個問題是關於傳遞給WriteableBitmap構造函數的固定大小,我怎麼知道來自數據庫的照片的大小?我可以讓它動態嗎?我想第二個問題是第一個問題的原因。
謝謝。
編輯
我也嘗試使用PictureDecoder.DecodeJpeg()
這樣的:
MemoryStream stream = new MemoryStream((Byte[])value);
WriteableBitmap bmp = PictureDecoder.DecodeJpeg(stream);
return bmp;
,但它也不能工作。在這種情況下,PictureDecoder.DecodeJpeg
假設爲我創建了bmp對象。我仍然收到一個未明確的錯誤。是否可以通過允許流的最大長度?
這不包括文件中的原始alpha數據。 – 2013-09-26 07:45:11