私はしばらくこの問題に取り組んできました。私はDBからバイト[]としてイメージを取得し、WritableBitmapに変換したいので、バインディングを使ってxamlページに表示することができます。バイト配列からWriteableBitmapイメージへWPalueConverter for 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);
2番目の問題は、WriteableBitmapコンストラクタに渡される固定サイズに関するものです。どのようにしてdbから来ている写真のサイズを知ることができますか?何とかダイナミックにすることができますか?私は2番目の問題が最初の問題の原因だと思います。
ありがとうございました。
EDIT
は、私はまた、このようなPictureDecoder.DecodeJpeg()
使用しようとしています
MemoryStream stream = new MemoryStream((Byte[])value);
WriteableBitmap bmp = PictureDecoder.DecodeJpeg(stream);
return bmp;
を、それはどちらか動作しませんでした。この場合、PictureDecoder.DecodeJpeg
私のためのbmpオブジェクトを作成すると仮定します。私はまだ不特定のエラーが発生します。ストリームに許可されている最大長を超えている可能性がありますか?
これには、ファイルの元のアルファデータは含まれません。 –