none
一个GDI+一般性错误的问题 RRS feed

  • 问题

  • 在做大量图象截取保存的时候,在"oSaveImage.Save()"方法中出现了“GDI+出现一般性错误”的错误,我百度了代码,改了一下,但还是不行,不知道我改得有没有错

     int iWidth = rect.Width - rect.X;
                int iHeight = rect.Height - rect.Y;
                string strImagePath = mHPHM.hImagePath;
                //载入底图
                using (System.Drawing.Image oFromImg = System.Drawing.Image.FromFile(strImagePath))
                {
                    //创建新图位图
                    System.Drawing.Bitmap oBitMap = new System.Drawing.Bitmap(iWidth, iHeight);
                    //创建作图区域
                    System.Drawing.Graphics oGraphic = System.Drawing.Graphics.FromImage(oBitMap);
                    //截取原图相应区域写入作图区
                    oGraphic.DrawImage(oFromImg, 0, 0, new Rectangle(rect.X, rect.Y, iWidth, iHeight), GraphicsUnit.Pixel);
                    //从作图区生成新图
                    Bitmap oSaveImage = System.Drawing.Image.FromHbitmap(oBitMap.GetHbitmap());
                    //保存图象
                    oSaveImage.Save(mHPHM.hHPHMImagePath, System.Drawing.Imaging.ImageFormat.Jpeg);
                    oGraphic.Dispose();
                    oSaveImage.Dispose();
                    oFromImg.Dispose();
                }
    谢谢
    2009年8月20日 3:30

答案

  • 你好!
    请检查如下方面:
    1. 相应的帐户没有写权限。
    解决方法:赋予 NETWORK SERVICE 帐户以写权限。
    2. 指定的物理路径不存在。
    解决方法:
    在调用 Save 方法之前,先判断目录是否存在,若不存在,则创建。
    if (!Directory.Exists(dirpath))
    Directory.CreateDirectory(dirpath);
    3. 保存的文件已存在并因某种原因被锁定。
    解决方法:
    重启IIS,解除锁定。并在代码中使用 using 语句,确保释放 Image 对象所使用的所有资源。
    周雪峰
    2009年8月20日 6:13
    版主