2013-06-25 211 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

..你可以完全在內存中做到這一點,儘管..沒有額外的寫入磁盤和刪除它的步驟.. –