5

当用户上传 jpg/gif/bmp 图像时,我希望将此图像转换为 png 图像,然后再转换为 base64 字符串。

我一直试图让这个工作,但我真的碰到了一堵墙,有人可以帮我吗?

我当前没有图像转换的代码如下:

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

...
}
4

3 回答 3

23

你根本没有在那里转换它..你可以使用这样的东西:

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..
}
于 2013-06-25T10:23:27.033 回答
1

您可以在临时文件夹中转换为 PNG,然后上传。

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

现在上传更改的文件,然后删除转换后的文件。

于 2013-06-25T10:27:43.263 回答
0

此代码用于在 asp.net 的文件夹中以 png 格式保存图像

#region 以 Png 格式保存图像
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
于 2018-08-03T06:06:27.360 回答