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

或者,如果您确实有 a ,请FromStream与 a 一起使用: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 回答