【问题标题】:C#: How to convert BITMAP byte array to JPEG format?C#:如何将 BITMAP 字节数组转换为 JPEG 格式?
【发布时间】:2010-10-02 05:23:15
【问题描述】:

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

【问题讨论】:

    标签: c# .net jpeg bmp


    【解决方案1】:

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

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

    如果您确实有byte[],则使用FromStreamnew MemoryStream(arr)

        byte[] raw = ...todo // File.ReadAllBytes("foo.bmp");
        using(Image img = Image.FromStream(new MemoryStream(raw)))
        {
            img.Save("foo.jpg", ImageFormat.Jpeg);
        }
    

    【讨论】:

    • 第二个正是我正在寻找的。但是,我正在写入另一个 MemoryStream 而不是归档。谢谢!
    【解决方案2】:

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

    我认为您可能正在寻找 System.Drawing.Bitmap.LockBits,返回 System.Drawing.Imaging.ImageData;这提供了使用指向内存的指针读取和写入图像像素的访问权限。

    【讨论】:

      【解决方案3】:
      public static Bitmap BytesToBitmap(byte[] byteArray)
      {
        using (MemoryStream ms = new MemoryStream(byteArray))
        {
          Bitmap img = (Bitmap)Image.FromStream(ms);
          return img;
        }
      }
      

      【讨论】:

      • 这是一张位图。他想要一张jpeg。
      • 正确,代码不完整。但它返回一个位图,您以后可以将其保存到任何格式的文件中......我想这是我对声誉战争的欢迎......无论如何都是我的错。
      • @juanjo.arana 但你没有回答他的问题,只是告诉他如何获取位图。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-03-05
      • 1970-01-01
      • 2023-04-08
      • 2013-09-25
      • 1970-01-01
      • 1970-01-01
      • 2015-12-27
      相关资源
      最近更新 更多