【问题标题】:When I try to save an image I get the error "A generic error occurred in GDI+."当我尝试保存图像时,我收到错误“GDI+ 中发生一般错误”。
【发布时间】:2012-07-27 04:54:15
【问题描述】:

当我运行此代码时,在我评论的那一行中,我总是收到“GDI+ 中发生一般错误”。运行时错误

    private void ConstructFromResourceSaveAsGif()
    {
        Bitmap bmp1 = new Bitmap(typeof(Button), "Button.bmp");

        //This line
        bmp1.Save("c:\\button.gif", System.Drawing.Imaging.ImageFormat.Gif);
    }

【问题讨论】:

  • 你为什么要创建一个类型是按钮的位图???它不起作用,因为您正在获取一个位图按钮
  • @KendallFrey 但是 OP 是否希望位图成为按钮?
  • 当 System.IO 错误弹出时我得到了同样的错误 - 例如不先创建目录。所以可能想确保你有正确的权限等等。
  • 我不希望它是一个按钮,我只是从 MSDN 复制代码

标签: c# bitmap gif save


【解决方案1】:

此构造函数将给定类型的命名空间与 资源的字符串名称并在程序集中查找匹配项 显现。例如,您可以传入 Button 类型和 Button.bmp 到这个构造函数,它会寻找一个名为 System.Windows.Forms.Button.bmp.

你有一个名为那个的资源吗?如果没有,那将是你的问题。 “发生了一般性错误……”是 GDI+ 不太友好的举手方式并说“它坏了,但我不会告诉你原因”

【讨论】:

    【解决方案2】:

    你可以直接使用代码

    private void ConstructFromResourceSaveAsGif()
    {
        Bitmap bmp1 = new Bitmap("Button.bmp");
    
        bmp1.Save("c:\\button.gif", System.Drawing.Imaging.ImageFormat.Gif);
    }
    

    它仍然可以工作,除非你试图完成@DanF 所说的。

    编辑

    这是我用来测试的一个快速应用程序:

    class Program
    {
        static void Main(string[] args)
        {
            Bitmap bmp1 = new Bitmap("C:/donut.jpg");
    
            bmp1.Save("c:\\button.gif", System.Drawing.Imaging.ImageFormat.Gif);
    
            Console.WriteLine("Save Success");
            Console.Read();
        }
    }
    

    【讨论】:

    • 谢谢,这解决了第一行的问题,但在第二行保存它仍然给我运行时错误
    • 我想你也误解了 typeof 行的作用 :-) 在这种情况下,它会将类型的命名空间和文件名组合在一起,然后查找一个名为 that 的嵌入式资源。
    • 是的,看到了,+1 了你的答案
    猜你喜欢
    • 1970-01-01
    • 2013-09-26
    • 1970-01-01
    • 1970-01-01
    • 2015-07-02
    • 2019-01-02
    • 1970-01-01
    • 2010-12-12
    • 2012-10-13
    相关资源
    最近更新 更多