C#: How to convert BITMAP byte array to JPEG format?

后端 未结 3 1873
孤街浪徒
孤街浪徒 2020-12-06 09:16

How can I convert a BITMAP in byte array format to JPEG format using .net 2.0?

相关标签:
3条回答
  • 2020-12-06 10:02

    If it is just a buffer of raw pixel data, and not a complete image file(including headers etc., such as a JPEG) then you can't use Image.FromStream.

    I think what you might be looking for is System.Drawing.Bitmap.LockBits, returning a System.Drawing.Imaging.ImageData; this provides access to reading and writing the image's pixels using a pointer to memory.

    0 讨论(0)
  • 2020-12-06 10:09

    What type of byte[] do you mean? The raw file-stream data? In which case, how about something like (using System.Drawing.dll in a client application):

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

    Or use FromStream with a new MemoryStream(arr) if you really do have a byte[]:

        byte[] raw = ...todo // File.ReadAllBytes("foo.bmp");
        using(Image img = Image.FromStream(new MemoryStream(raw)))
        {
            img.Save("foo.jpg", ImageFormat.Jpeg);
        }
    
    0 讨论(0)
  • 2020-12-06 10:12
    public static Bitmap BytesToBitmap(byte[] byteArray)
    {
      using (MemoryStream ms = new MemoryStream(byteArray))
      {
        Bitmap img = (Bitmap)Image.FromStream(ms);
        return img;
      }
    }
    
    0 讨论(0)
提交回复
热议问题