我一直在寻找解决这个棘手问题的方法,并找到了不少答案,但遗憾的是这些答案对我来说似乎没有用。
我有以下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。
知道如何解决这个问题吗?