画像リソースを byte[] に変換できません。
たとえば、次のリソースがあります。
pack://application:,,,/AppName;component/Assets/Images/sampleimage.jpg
私のプログラムで。これをバイト[]に変換するにはどうすればよいですか。
BitMapImage を使用してみましたが、初期化後に ImageSource が null になってしまいます。
これはうまくいくようです:
var info = Application.GetResourceStream(uri);
var memoryStream = new MemoryStream();
info.Stream.CopyTo(memoryStream);
return memoryStream.ToArray();
BitmapSource
aを 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());