25

.net 2.0 を使用してバイト配列形式の BITMAP を JPEG 形式に変換するにはどうすればよいですか?

4

3 に答える 3

44

どのタイプのbyte[]ことですか?生のファイルストリームデータ? System.Drawing.dllその場合、(クライアントアプリケーションで使用する)のようなものはどうですか:

    using(Image img = Image.FromFile("foo.bmp"))
    {
        img.Save("foo.jpg", ImageFormat.Jpeg);
    }

または、本当に がある場合はFromStreama とともに使用します。new MemoryStream(arr)byte[]

    byte[] raw = ...todo // File.ReadAllBytes("foo.bmp");
    using(Image img = Image.FromStream(new MemoryStream(raw)))
    {
        img.Save("foo.jpg", ImageFormat.Jpeg);
    }
于 2009-01-19T11:56:35.663 に答える
3

生のピクセル データの単なるバッファーであり、完全な画像ファイル (JPEG などのヘッダーなどを含む) ではない場合は、Image.FromStream を使用できません。

あなたが探しているのは System.Drawing.Bitmap.LockBits で、System.Drawing.Imaging.ImageData; を返していると思います。これにより、メモリへのポインターを使用して、画像のピクセルの読み取りと書き込みにアクセスできます。

于 2009-01-19T12:08:58.523 に答える
-4
public static Bitmap BytesToBitmap(byte[] byteArray)
{
  using (MemoryStream ms = new MemoryStream(byteArray))
  {
    Bitmap img = (Bitmap)Image.FromStream(ms);
    return img;
  }
}
于 2012-04-12T13:50:45.850 に答える