2013-04-17 199 views
1

我正在從Web服務獲取數據的網站上工作。我們的Android開發人員給了我一個像這樣的Base64字符串。將base64轉換爲圖像並在gridview中顯示

iVBORw0KGgoAAAANSUhEUgAAAKAAAAB4CAYAAAB1ovlvAAAABHNCSVQICAgIf。 。 。 。 。 。 。 。 。 。

我將這個字符串保存到我的數據庫。我想知道如何將其轉換爲圖像。

+0

你的字符串編碼不僅BASE64,而且URL編碼。要獲得base64字符串,請使用'string base64 = HttpUtility.UrlDecode(str);' – I4V

回答

5

下面是解決方案,您

public Image Base64ToImage(string base64String) 
{ 
    // Convert Base64 String to byte[] 
    byte[] imageBytes = Convert.FromBase64String(base64String); 
    MemoryStream ms = new MemoryStream(imageBytes, 0,imageBytes.Length); 

    // Convert byte[] to Image 
    ms.Write(imageBytes, 0, imageBytes.Length); 
    Image image = Image.FromStream(ms, true); 
    return image; 
} 
+0

謝謝SACHIN先生,但是當我這樣做時,它給了我這個錯誤 System.Web.UI.WebControls.Image'不包含'FromStream – user2193729

+0

@Sachin'MemoryStream ms = new MemoryStream(imageBytes);'就夠了。你不需要寫入它。在這種形式下,還必須設置位置爲0傳遞給'FromStream' – I4V

2

如果你顯示網頁(您加入asp.net作爲標籤之一,所以我假定這是Web)你可以作弊和做到這一點:

<img src="data:image/png;base64,<%=base64String%>"/> 

這假設圖像是一個PNG,否則將其更改爲圖像/ JPG或其他。

不利之處是這會停止圖像被緩存。所以在實踐中@Sachin的解決方案更實用。如果你想避免保存文件,無論出於何種原因(或只是想「我需要它現在的工作」的解決方案),這種方式是乾脆利落

+0

之前謝謝你們非常非常多。有效。 :-) – user2193729