converting an image to png on upload

Sam Jones picture Sam Jones · Jun 25, 2013 · Viewed 18.4k times · Source

When a user uploads a jpg/gif/bmp image, I want this image to be converted to a png image and then converted to a base64 string.

I've been trying to get this to work but I've hit a brick wall really, can anyone help me out please?

My current code without the image conversion is below:

public ActionResult UploadToBase64String(HttpPostedFileBase file)
        {

                var binaryData = new Byte[file.InputStream.Length];
                file.InputStream.Read(binaryData, 0, (int) file.InputStream.Length);
                file.InputStream.Seek(0, SeekOrigin.Begin);
                file.InputStream.Close();

                string base64String = Convert.ToBase64String(binaryData, 0, binaryData.Length);

...
}

Answer

Simon Whitehead picture Simon Whitehead · Jun 25, 2013

You're not converting it at all there.. you can use something like this:

using System.Drawing;

Bitmap b = (Bitmap)Bitmap.FromStream(file.InputStream);

using (MemoryStream ms = new MemoryStream()) {
    b.Save(ms, ImageFormat.Png);

    // use the memory stream to base64 encode..
}