2012-01-13 24 views
0

我發現下面的代碼,但無法理解我應該通過ImageToBase64(Image image, System.Drawing.Imaging.ImageFormat format)應該通過什麼。C#使用FileUpload上傳圖片

我需要一個FileUpload工具來上傳圖片到系統,並把它傳遞給ImageToBase64

僅供參考我的代碼是

public string ImageToBase64(Image image, System.Drawing.Imaging.ImageFormat format) 
    { 
     using (MemoryStream ms = new MemoryStream()) 
     { 
      image.Save(ms, format); 
      byte[] imageBytes = ms.ToArray(); 
      string base64String = Convert.ToBase64String(imageBytes); 
      return base64String; 
     } 
    } 

我試着做ImageToBase64(FileUpload.FileBytes, "Image/PNG")但我得到語法錯誤。什麼是我可以使用這個代碼的正確語法?

回答

6

因爲該函數需要Image類型和ImageFormat類型的參數,並且傳入了byte []和string。

你不需要MIME類型,你就只需要

var base64String = Convert.ToBase64String(FileUpload.FileBytes); 
+0

非常感謝!有沒有這樣簡單的方法來將'Base64String'轉換回'Image'? – 2012-01-13 15:26:12

+0

Convert.FromBase64CharArray()應該就足夠了。 – jishi 2012-01-13 15:27:13

+0

對不起Jishi我無法理解如何使用'Convert.FromBase64CharArray()'將'base64String'轉換回圖像。 – 2012-01-13 15:33:46

0

方法簽名狀態,第二個參數是ImageFormat類型。這是一個枚舉,所以你會使用它像這樣:

/// create or load a bitmap 
var bitmap = new Bitmap(.....); 

var base64string = ImageToBase64(bitmap,ImageFormat.Bmp); 

在這種情況下,ImageFormat參數顯然是用來告訴Save()方法是什麼格式,你想在(JPEG,PNG數據, bmp等)。 MIME類型不足,並且不屬於此上下文,因爲此方法不是特定於Web的。

+0

我應該在哪裏使用FileUpload?和我應該寫在'新的位圖(....);'? – 2012-01-13 15:29:36

+0

@Madcoder我認爲你試圖將你已經擁有的圖片轉換爲基本的64字符串,因爲這就是你發佈的方法。如果您已經從表單POST(可能在ASP.NET中)中獲得了'FileUpload',則根本不需要經過base 64編碼。你究竟想要做什麼? – 2012-01-13 15:35:19