2

画像リソースを byte[] に変換できません。

たとえば、次のリソースがあります。

pack://application:,,,/AppName;component/Assets/Images/sampleimage.jpg

私のプログラムで。これをバイト[]に変換するにはどうすればよいですか。

BitMapImage を使用してみましたが、初期化後に ImageSource が null になってしまいます。

4

2 に答える 2

5

これはうまくいくようです:

var info = Application.GetResourceStream(uri);
var memoryStream = new MemoryStream();
info.Stream.CopyTo(memoryStream);
return memoryStream.ToArray();
于 2013-02-18T05:27:38.540 に答える
1

BitmapSourceaを aに変換する一般的な解決策は次のbyte[]ようになります。

public byte[] GetImageBuffer(BitmapSource bitmap, BitmapEncoder encoder)
{
    encoder.Frames.Add(BitmapFrame.Create(bitmap));

    using (var stream = new MemoryStream())
    {
        encoder.Save(stream);
        return stream.ToArray();
    }
}

以下に示すように、WPF で利用可能なBitmapEncoderのいずれかと一緒に使用します。

var uri = new Uri("pack://application:,,,/AppName;component/Assets/Images/sampleimage.jpg");
var bitmap = new BitmapImage(uri);
var buffer = GetImageBuffer(bitmap, new JpegBitmapEncoder());
于 2013-02-18T09:25:28.900 に答える