我的WP7的應用程序有一個Image控件,其來源在XAML設定爲圖像設置爲內容的生成操作:如何將Image.Source轉換爲字節數組?
<Image x:Name="MyImage" Source="/Images/myimage.png"/>
我需要這個圖像存儲在我的SQLCE數據庫作爲字節數組。這是我當前的代碼轉換爲byte []:
public byte[] ImageToArray() {
BitmapImage image = new BitmapImage();
image.CreateOptions = BitmapCreateOptions.None;
image.UriSource = new Uri("/Images/myimage.png", UriKind.Relative);
WriteableBitmap wbmp = new WriteableBitmap(image);
return wbmp.ToArray();
}
的字節數組保存到數據庫中,但是當我取回我的轉換器試圖將其轉換回(在不同的頁面),我得到「未指定錯誤。」這是我的轉換器:
public class BytesToImageConverter : IValueConverter {
public object Convert(object Value, Type TargetType, object Parameter, CultureInfo Culture) {
if(Value != null && Value is byte[]) {
byte[] bytes = Value as byte[];
using(MemoryStream stream = new MemoryStream(bytes)) {
stream.Seek(0, SeekOrigin.Begin);
BitmapImage image = new BitmapImage();
image.SetSource(stream); // Unspecified error here
return image;
}
}
return null;
}
public object ConvertBack(object Value, Type TargetType, object Parameter, CultureInfo Culture) {
throw new NotImplementedException("This converter only works for one way binding.");
}
}
我已經完成了相當多的搜索。就轉換器而言,我的代碼非常標準。我見過提及stream.Position = 0;
是必要的,但我的理解是stream.Seek
正在做同樣的事情;我已經嘗試了兩種。
由於我的轉換器與我現在在十幾個項目中使用的相同,我相當確信問題在於將Image控件的Source轉換爲字節數組,因此我的圖像數據已損壞。在我上面的代碼是硬編碼開放的,但我也試着
BitmapImage image = MyImage.Source as BitmapImage;
沒有運氣。我已經在這裏呆了幾個小時,並在我的智慧結束。我錯過了什麼?
此問題已經詢問[此處](http://stackoverflow.com/questions/9806332)。必須看到 –