2013-06-25 160 views
2

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

我一直试图让这个工作,但我真的打了一堵砖墙,任何人都可以帮我吗?

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

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

... 
} 
+0

看看http://stackoverflow.com/questions/254419/asp-net-image-uploading-with-resizing – Gregoire

回答

12

你不转换它在所有有..你可以使用这样的事情:

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

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

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

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

+0

为什么把它放在磁盘上呢? ... –

+0

然后它会在上传后被删除。 –

+2

..你可以完全在内存中做到这一点,尽管..没有额外的写入磁盘和删除它的步骤.. –