我一直在寻找解决这个令人烦恼的问题的方法,并找到了很多答案,不幸的是,这些答案似乎对我不起作用。
我有以下 ASP.NET 代码,应该将图像作为 JPEG 或 PNG 输出到 Web 浏览器:
public partial class MyImg : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
using(Bitmap bmp = new Bitmap(880, 520))
{
using (System.Drawing.Graphics gfx = System.Drawing.Graphics.FromImage(bmp))
{
try
{
gfx.Clear(Color.Aqua);
// finalizeOutput(bmp, gfx, MyImageType.SCGIT_JPEG); //Works
finalizeOutput(bmp, gfx, MyImageType.SCGIT_PNG); //DOES NOT Work
}
catch (Exception ex)
{
}
}
}
}
protected void finalizeOutput(System.Drawing.Graphics gfx, Bitmap bmp, MyImageType imageType)
{
//Get image type
ImageFormat imgFmt;
string strContentType;
switch (imageType)
{
case MyImageType.SCGIT_GIF:
strContentType = "image/gif";
imgFmt = ImageFormat.Gif;
break;
case MyImageType.SCGIT_PNG:
strContentType = "image/png";
imgFmt = ImageFormat.Png;
break;
default:
strContentType = "image/jpeg";
imgFmt = ImageFormat.Jpeg;
break;
}
//Finalizing and Cleaning Up
Response.ContentType = strContentType;
bmp.Save(Response.OutputStream, imgFmt); //THROWS EXCEPTION for png type: "A generic error occurred in GDI+."
// bmp.Dispose();
// gfx.Dispose();
Response.End();
}
}
发生的情况是,上述方法在我安装在 Windows 7 上的 VS2010 开发 IIS 上完美运行,但是当我在 Vista 上尝试完全相同的代码时,它会抛出“GDI+ 中发生一般错误”异常,但仅适用于图像类型 PNG ,它适用于 JPEG。
知道如何解决这个问题吗?