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); } 

如果你真的有一个byte[]或者使用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; } }