Question

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

...
}
Was it helpful?

Solution

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..
}

OTHER TIPS

You can convert to PNG in temp folder and then upload it.

private string GetConvertedPNGFile(string imagename)
{
    var bitmap = Bitmap.FromFile(imagename);
    b.Save(Path.GetFileName(imagename) + ".png", ImageFormat.Png);
    return Path.GetFileName(imagename) + ".png";
}

Now upload the changed file and then delete the converted file.

This code is use for save image in png format in a folder in asp.net

#region Save image in Png format
string imgName1 = "Photo_" + lblCode.InnerText;

            Guid uid1 = Guid.NewGuid();
            string PhotoPath1 = Server.MapPath("~/Employee/EmpPngPhoto/") + lblCode.InnerText;
            string SavePath1 = PhotoPath1 + "\\" + imgName + ".png";
            if (!(Directory.Exists(PhotoPath1)))
            {
                Directory.CreateDirectory(PhotoPath1);
            }
            System.Drawing.Bitmap bmpImage1 = new System.Drawing.Bitmap(fuPhotoUpload.PostedFile.InputStream);
            System.Drawing.Image objImage1 = ScaleImage(bmpImage1, 160);
            objImage.Save(SavePath1, ImageFormat.Png);
            #endregion
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top