質問

.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;
  }
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top