C#:如何将BITMAP字节数组转换为JPEG格式?

时间:2009-01-19 11:50:59

标签: c# .net jpeg bmp

如何使用.net 2.0将字节数组格式的BITMAP转换为JPEG格式?

3 个答案:

答案 0 :(得分:44)

你是什么类型的byte[]?原始文件流数据?在这种情况下,如何(在客户端应用程序中使用System.Drawing.dll):

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

如果您确实拥有FromStream,请使用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);
    }

答案 1 :(得分:3)

如果它只是原始像素数据的缓冲区,而不是完整的图像文件(包括标题等,如JPEG),则无法使用Image.FromStream。

我认为你可能正在寻找的是System.Drawing.Bitmap.LockBits,返回一个System.Drawing.Imaging.ImageData;这样就可以使用指向内存的指针来读取和写入图像的像素。

答案 2 :(得分:-4)

public static Bitmap BytesToBitmap(byte[] byteArray)
{
  using (MemoryStream ms = new MemoryStream(byteArray))
  {
    Bitmap img = (Bitmap)Image.FromStream(ms);
    return img;
  }
}