【问题标题】:converting an image to png on upload在上传时将图像转换为 png
【发布时间】:2013-06-22 02:19:27
【问题描述】:

当用户上传 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);

...
}

【问题讨论】:

标签: c# httppostedfilebase


【解决方案1】:

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

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

【讨论】:

  • +1 用于在内存中执行此操作。显然,如果您出于某种原因转换图像,您希望使用该图像。其他答案都想立即写入磁盘。
【解决方案2】:

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

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

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

【讨论】:

  • 上传后会被删除。
  • ..你可以完全在内存中完成它..无需写入磁盘并随后删除它的额外步骤..
  • 当然,但这也是一种方法。
【解决方案3】:

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

#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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-01
    • 2020-06-15
    • 2012-06-01
    • 2017-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多