C#:BITMAPバイト配列をJPEG形式に変換する方法
質問
.net 2.0を使用して、バイト配列形式のBITMAPをJPEG形式に変換するにはどうすればよいですか?
解決
byte[]
の種類は何ですか?生のファイルストリームデータ?その場合、次のようなものはどうでしょうか(クライアントアプリケーションでSystem.Drawing.dll
を使用):
using(Image img = Image.FromFile("foo.bmp"))
{
img.Save("foo.jpg", ImageFormat.Jpeg);
}
またはFromStream
がある場合は、new MemoryStream(arr)
とともに<=>を使用します:
byte[] raw = ...todo // File.ReadAllBytes("foo.bmp");
using(Image img = Image.FromStream(new MemoryStream(raw)))
{
img.Save("foo.jpg", ImageFormat.Jpeg);
}
他のヒント
完全な画像ファイル(JPEGなどのヘッダーなどを含む)ではなく、生のピクセルデータの単なるバッファーである場合、Image.FromStreamを使用できません。
あなたが探しているのはSystem.Drawing.Bitmap.LockBitsで、System.Drawing.Imaging.ImageDataを返すと思います。これにより、メモリへのポインタを使用して画像のピクセルを読み書きすることができます。
public static Bitmap BytesToBitmap(byte[] byteArray)
{
using (MemoryStream ms = new MemoryStream(byteArray))
{
Bitmap img = (Bitmap)Image.FromStream(ms);
return img;
}
}
所属していません StackOverflow