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

50,530

Solution 1

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

Solution 2

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.

Share:
50,530

Related videos on Youtube

Marc
Author by

Marc

Updated on April 13, 2020

Comments

  • Marc
    Marc about 4 years

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

  • Marc
    Marc over 15 years
    The second one was just what I was searching for. I'm however writing into another MemoryStream rather than to file. Thanks!
  • AnthonyBlake
    AnthonyBlake about 12 years
    this is a bitmap. he wants a jpeg.
  • jdearana
    jdearana about 10 years
    Correct, the code is not complete. But it returns a Bitmap, which you can later on save to a file in any format.... I guess this is my welcome to the Reputation Wars... My fault anyway.
  • gbjbaanb
    gbjbaanb about 10 years
    @juanjo.arana but you have not given an answer to his question, just told him how to get a bitmap.