0

我一直在寻找解决这个令人烦恼的问题的方法,并找到了很多答案,不幸的是,这些答案似乎对我不起作用。

我有以下 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。

知道如何解决这个问题吗?

4

0 回答 0