user9647280
user9647280

Reputation:

Convert any image format to JPG

I have a web app that runs on Azure. The user can upload an image and I save that image for them. Now when I receive the image, I have it as byte[]. I would like to save it as JPG to save space. The source image could be anything such as PNG, BMP or JPG.

Is it possible to do so? This needs to run on Azure and I am using WebApps/MVC5/C#.

Thanks for any help.

Upvotes: 2

Views: 12436

Answers (2)

Cody Popham
Cody Popham

Reputation: 1002

Get the MemoryStream and then use System.Drawing

var stream = new MemoryStream(byteArray);
Image img =  new Bitmap(stream);
img.Save(@"c:\s\pic.png", System.Drawing.Imaging.ImageFormat.Png);

The last line there where you save the file, you can select the format.

Upvotes: 3

user9647280
user9647280

Reputation:

So the answers by @mjwills and Cody was correct. I still thought to put the two methods I exactly needed:

    public static Image BitmapToBytes(byte[] image, ImageFormat pFormat)
    {
        var imageObject = new Bitmap(new MemoryStream(image));

        var stream = new MemoryStream();
        imageObject.Save(stream, pFormat);

        return new Bitmap(stream);
    }

Also:

    public static byte[] ImgToByteArray(Image img)
    {
        using (MemoryStream mStream = new MemoryStream())
        {
            img.Save(mStream, img.RawFormat);
            return mStream.ToArray();
        }
    }

Cheers everyone.

Upvotes: 3

Related Questions