나는 얼마 동안이 문제를 다루었 다. 내 DB에서 이미지를 바이트 []로 가져오고 WritableBitmap으로 변환하여 바인딩을 사용하여 내 xaml 페이지에 표시 할 수 있습니다.바이트 어레이에서 WriteableBitmap 이미지 WPal7에 대한 IValueConverter
나는 이것을 사용하고 있습니다 :
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();
}
}
첫 번째 문제는 그것이 작동하지 않는다는 것입니다. 안타 때 예외가 throw됩니다. bmp.LoadJpeg(stream);
두 번째 문제는 WriteableBitmap 생성자에 전달되는 고정 크기에 관한 것이며, db에서 오는 사진의 크기를 어떻게 알 수 있습니까? 어떻게 든 동적으로 만들 수 있습니까? 나는 두 번째 문제가 첫 번째 문제의 원인이라고 생각한다.
감사합니다.
편집
나는 또한이 같은PictureDecoder.DecodeJpeg()
를 사용하여 시도합니다 한
:
MemoryStream stream = new MemoryStream((Byte[])value);
WriteableBitmap bmp = PictureDecoder.DecodeJpeg(stream);
return bmp;
하지만 중 하나가 작동하지 않았다. 이 경우 PictureDecoder.DecodeJpeg
나를 위해 bmp 개체를 만드는 것으로 가정합니다. 나는 여전히 불특정 오류가 발생합니다. 스트림에 허용되는 최대 길이를 넘을 수 있습니까?
파일의 원래 알파 데이터는 포함되지 않습니다. –