2013-07-30 64 views
1

我有一個MVC應用程序,我正在創建一個帶有一些文本的小200x200圖像。圖像在網頁上不透明

將圖像保存到文件系統時的背景是透明的,但是當我在視圖中渲染ByteArray時,透明度爲黑色。

這是一些創建圖像

var newImage = new Bitmap(200, 200, System.Drawing.Imaging.PixelFormat.Format32bppArgb); 
newImage.MakeTransparent(Color.Black); 
Graphics g = Graphics.FromImage(newImage); 
g.Clear(Color.Transparent); 
MemoryStream memoryStream = new MemoryStream(); 
newImage.Save(memoryStream, System.Drawing.Imaging.ImageFormat.Jpeg); 
return memoryStream; 

這是在我的控制器代碼。 ReadToEnd的將MemoryStream轉換爲字節數組

public FileContentResult GetImage() 
{ 
    Captioner.Captioner captioner = new Captioner.Captioner(); 
    MemoryStream msSpeechBubble = captioner.DrawSpeechBubble(); 

    byte[] buffer = ReadToEnd(msSpeechBubble); 
    return File(buffer, "image/png"); 
} 

這就是後來我的視圖代碼

<img src="<%= Url.Action("GetImage", "Home") %>" /> 
+4

System.Drawing.Imaging.ImageFormat.Jpeg刪除Alpha通道。 – Monso

+0

很高興知道,謝謝 – griegs

回答

1

改變這一行

newImage.Save(memoryStream, System.Drawing.Imaging.ImageFormat.Jpeg); 

newImage.Save(memoryStream, System.Drawing.Imaging.ImageFormat.Png); 

,你應該被設置。您的操作方法已經將內容類型設置爲Png,因此您已經關閉了。但是,如果爲了用戶體驗而檢測到不同的圖像格式,瀏覽器將忽略它。

+0

你在開玩笑吧?我不敢相信,即使我有選擇地選擇問題中包含的代碼,我錯過了那一個。謝謝。 :) – griegs