C#/.net中出现 "GDI+中发生一般性错误"解决方案
有时我们在读取本地图片,调用 Image.Save() 方法,将其另保存为其他格式时,经常会碰到一个错误:“GDI+中发生一般性错误”;一般出现这种错误有 3 种可能:
1.保存路径不存在或者错误;
2.权限问题
3.“Bitmap 对象或一个 图像 对象从一个文件, 构造时该文件仍保留锁定对于对象的生存期。 因此, 无法更改图像并将其保存回它产生相同的文件”
对于,1、2问题就不多说了,针对问题3,一般我们重新保存一份图片,也就2行代码
var img = Image.FromFile(imgpath);
img.Save(newPath, System.Drawing.Imaging.ImageFormat.Jpeg);
如果是由于问题 3 导致的报错,可以采用如下方式,重绘图片:
var oldImg = new Bitmap(item);
Bitmap img = new Bitmap(oldImg);
Graphics draw = Graphics.FromImage(img);
draw.DrawImage(oldImg, , , oldImg.Width, oldImg.Height);
oldImg.Dispose();
newPath = $"{goalDir}{item.Replace(basePath, "").Replace(".bmp", ".jpg")}";
string newDir = Path.GetDirectoryName(newPath);
if (!Directory.Exists(newDir))
{
Directory.CreateDirectory(newDir);
}
img.Save(newPath, System.Drawing.Imaging.ImageFormat.Jpeg);
img.Dispose();
这样基本就能解决问题了。
C#/.net中出现 "GDI+中发生一般性错误"解决方案的更多相关文章
- GDI+中发生一般性错误的解决办法(转帖)
今天在开发.net引用程序中,需要System.Drawing.Image.Save 创建图片,debug的时候程序一切正常,可是发布到IIS后缺提示出现“GDI+中发生一般性错误”的异常.于是开始“ ...
- GDI+ 中发生一般性错误。
GDI+ 中发生一般性错误. “/wechat”应用程序中的服务器错误. GDI+ 中发生一般性错误. 说明: 执行当前 Web 请求期间,出现未经处理的异常.请检查堆栈跟踪信息,以了解有关该错误以及 ...
- [转载]GDI+中发生一般性错误
注:第一次写博客,把自己遇到的问题和收集的资料记录在博客上.在开发.NET应用中,使用 System.Drawing.Image.Save 方法而导致“GDI+ 中发生一般性错误”的发生,通常有以下三 ...
- GDI+中发生一般性错误(转载)
在开发.NET应用中,使用 System.Drawing.Image.Save 方法而导致“GDI+ 中发生一般性错误”的发生,通常有以下三种原因:1. 相应的帐户没有写权限.解决方法:赋予 NETW ...
- GDI+ 中发生一般性错误(在 OutputStream 中保存 PNG 格式图像时遇到的问题)
在将图片以 PNG 格式保存至 Response.OutputStream 时,会碰到如下错误: GDI+ 中发生一般性错误. 原因: 在写 PNG 格式的图像时,指针需要在存储的位置来回移动.而 R ...
- 【转】GDI+中发生一般性错误的解决办法
今天在开发.net引用程序中,需要System.Drawing.Image.Save 创建图片,debug的时候程序一切正常,可是发布到IIS后缺提示出现“GDI+中发生一般性错误”的异常. 于是开始 ...
- GDI+中发生一般性错误的解决办法(转)
今天在开发.net引用程序中,需要System.Drawing.Image.Save 创建图片,debug的时候程序一切正常,可是发布到IIS后缺提示出现"GDI+中发生一般性错误" ...
- Image.Save()发生“GDI+ 中发生一般性错误”
从数据库中读取的图片是byte[]类型,将其转换成Image可以正常显示,但是调用image.Save()时会发生“GDI+ 中发生一般性错误”.public static System.Drawin ...
- gdi+ 中发生一般性错误 wpf解决方法
错误背景:原来在winform程序中写了一个窗口,在wpf应用程序中调用显示了这个窗口,有个头像功能,加载本地的一个图片文件,加载前进行了各种逻辑判断,效果如下: 而加载的关键代码如下面: pictu ...
随机推荐
- [js]vue小结
vue基础 - vue是一个渐进式框架 vue (视图渲染) components(路由机制) vue-router(路由管理) vuex (状态管理) vuecli (构建工具) - 库和框架 库如 ...
- Activiti数据库支持
Activiti的后台是有数据库的支持,所有的表都以ACT_开头. 第二部分是表示表的用途的两个字母标识. 用途也和服务的API对应. ACT_RE_*: 'RE'表示repository. 这个前缀 ...
- Linux下nginx配置https协议访问
一.配置nginx支持https协议访问,需要在编译安装nginx的时候添加相应的模块--with-http_ssl_module 查看nginx编译参数:/usr/local/nginx/sbin/ ...
- centos7 mysql 启动mysqld.service - SYSV: MySQL database server错误
1.启动命令 systemctl start mysqld.service 或者 /etc/init.d/mysqld start 结果同样的错误 2.错误是: Job for mysqld.se ...
- Qt打开文件QFileDialog
//打开Pts文件按钮点击事件void AnalysisPtsDataTool201905::OnOpenFileButtonClick(){ qDebug()<<"open f ...
- php文件断点上传
前段时间做视频上传业务,通过网页上传视频到服务器. 视频大小 小则几十M,大则 1G+,以一般的HTTP请求发送数据的方式的话,会遇到的问题:1,文件过大,超出服务端的请求大小限制:2,请求时间过长, ...
- Product - 产品经理 - 知返
特别说明 本文是已读书籍的学习笔记和内容摘要,原文内容有少部分改动,并添加一些相关信息,但总体不影响原文表达. - ISBN: 9787568041591 - https://book.douban. ...
- libvirt2.0安装
目录 1.libvirt介绍 2.卸载系统自带的libvirt 2.1.查看当前安装的libvirt相关包 2.2.全部卸载掉 3.使用tar包编译安装 3.1.解压缩 3.2.生成Makefile文 ...
- Apache服务器安装SSL证书
Apache服务器安装SSL证书 在证书控制台下载Apache版本证书,下载到本地的是一个压缩文件,解压后里面包含_public.crt文件是证书文件,_chain.crt是证书链(中间证书)文件,. ...
- 【计算机视觉】深度相机(六)--Kinect v2.0 手势样本库制作
目录为1.如何使用Kinect Studio录制手势剪辑:2.如何使用Visual Gesture Builder创建手势项目:3.如何在我的C#程序中使用手势:4.关于录制.剪辑手势过程中的注意事项 ...