6

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

...
}
Sam Jones
  • 4,443
  • 2
  • 40
  • 45

3 Answers3

28

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..
}
Simon Whitehead
  • 63,300
  • 9
  • 114
  • 138
  • 1
    +1 for doing it in memory. Obviously you want to work with the image if your converting it for some reason. The other answers all want to write it to disk immediately. – Arachnid Jul 04 '19 at 17:53
1

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.

Sri Harsha Chilakapati
  • 11,744
  • 6
  • 50
  • 91
0

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
Code
  • 679
  • 5
  • 9