.net 2.0を使用してバイト配列形式のBITMAPをJPEG形式に変換するにはどうすればよいですか?
_byte[]
_とはどういう意味ですか?生ファイルストリームデータ?その場合、(クライアントアプリケーションで_System.Drawing.dll
_を使用して)のようなものはどうでしょうか。
_ using(Image img = Image.FromFile("foo.bmp"))
{
img.Save("foo.jpg", ImageFormat.Jpeg);
}
_
または、実際に_byte[]
_がある場合は、new MemoryStream(arr)
とともにFromStream
を使用します。
_ 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を返すと思います。これにより、メモリへのポインタを使用して画像のピクセルを読み書きするアクセスが提供されます。