我有一个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") %>" />
答案 0 :(得分:1)
更改此行
newImage.Save(memoryStream, System.Drawing.Imaging.ImageFormat.Jpeg);
到
newImage.Save(memoryStream, System.Drawing.Imaging.ImageFormat.Png);
你应该被设置。您的操作方法已将内容类型设置为Png,因此您已关闭。但是,如果为了用户体验而检测到不同的图像格式,浏览器将忽略它。