BitmapImageをbyte []で変換する必要がありますが、C#webでBitmapImageを行う方法が見つかりません。 例が見つかりましたが、どれも動作しません(JpegBitmapEncoderは存在しません。BitmapImageObject.StreamSourceは存在せず、パラメータとしてBitmapImageを持つWriteableBitmapコンストラクタがなく、Extensions.SaveJpeg(パラメータ)が存在しません... )。私が見つけたBitmapImage to byte [] - C#web
例:
コンストラクタ新しいWriteableBitmap(のBitmapImage)が存在しません。
public static byte[] ConvertToBytes(this BitmapImage bitmapImage)
{
byte[] data;
// Get an Image Stream
using (MemoryStream ms = new MemoryStream())
{
WriteableBitmap btmMap = new WriteableBitmap(bitmapImage);
// write an image into the stream
Extensions.SaveJpeg(btmMap, ms,
bitmapImage.PixelWidth, bitmapImage.PixelHeight, 0, 100);
// reset the stream pointer to the beginning
ms.Seek(0, 0);
//read the stream into a byte array
data = new byte[ms.Length];
ms.Read(data, 0, data.Length);
}
//data now holds the bytes of the image
return data;
}
新しいWriteableBitmap(IMG)、System.Windows.Media.Imaging.Extensions.SaveJpegは存在しません。
public static byte[] ImageToBytes(BitmapImage img)
{
using (MemoryStream ms = new MemoryStream())
{
WriteableBitmap btmMap = new WriteableBitmap(img);
System.Windows.Media.Imaging.Extensions.SaveJpeg(btmMap, ms, img.PixelWidth, img.PixelHeight, 0, 100);
img = null;
return ms.ToArray();
}
}
imageSource.StreamSource
は存在しません。public static byte[] ImageToByte(BitmapImage imageSource)
{
Stream stream = imageSource.StreamSource;
Byte[] buffer = null;
if (stream != null && stream.Length > 0)
{
using (BinaryReader br = new BinaryReader(stream))
{
buffer = br.ReadBytes((Int32)stream.Length);
}
}
return buffer;
}
JpegBitmapEncoder
は存在しません。byte[] data;
JpegBitmapEncoder encoder = new JpegBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(bitmapImage));
using(MemoryStream ms = new MemoryStream())
{
encoder.Save(ms);
data = ms.ToArray();
}
外部ライブラリをリンクする必要があるようです。それについて読むと、後でこの問題を解決できるかもしれません。 –
githubにコードを共有できますか? –