【发布时间】:2012-03-30 18:07:16
【问题描述】:
我已经解决这个问题一段时间了。我从我的数据库中以字节 [] 的形式获取图像,我想将其转换为 WritableBitmap,以便我可以使用绑定在我的 xaml 页面上显示它。
我正在使用这个:
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 对象。我仍然收到一个未指定的错误。难道是我通过了流允许的最大长度?
【问题讨论】:
标签: c# wpf silverlight windows-phone-7