Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# “ASP.NET”;GDI+;中发生一般性错误&引用;仅适用于Vista计算机上的PNG图像_C#_Asp.net_Gdi+ - Fatal编程技术网

C# “ASP.NET”;GDI+;中发生一般性错误&引用;仅适用于Vista计算机上的PNG图像

C# “ASP.NET”;GDI+;中发生一般性错误&引用;仅适用于Vista计算机上的PNG图像,c#,asp.net,gdi+,C#,Asp.net,Gdi+,我一直在寻找解决这个令人烦恼的问题的方法,并找到了很多答案,不幸的是,这些答案似乎对我不起作用 我有以下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)) {

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

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


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

那些
bmp
gfx
变量在哪里初始化?IDisposable资源(如位图和图形)应尽可能短,并始终使用块包装,以避免泄漏句柄并确保正确处理。它们在我准备图像时在页面加载中初始化。然后调用finalizeOutput将其输出到浏览器。我建议您使用相同的方法执行此操作,并使用语句将这些IDisposable对象包装起来。好的,我会的。但这会如何影响这个异常呢?我想看看您在哪里实例化这些gfx和bmp变量。我甚至没有注意到你更新了你的帖子。我告诉过你使用
语句。不呼叫。请手动处理。