GDI+中发生一般性错误 Winform Image.Save(mstream, ImageFormat.Png)引发
在处理图片时,读取本地图像文件,进行另存时发生GDI+中发生一般性错误 。
具体情况如下:
用OpenFileDialog打开图像文件,文件名为filename
StreamReader sr = new StreamReader(filename);
Stream sm = sr.BaseStream;
imgZheng = Image.FromStream(sm); sm.Close();
sr.Close(); //将读取到的Image重新写入流,转化为byte[]以便进行进一步的处理
MemoryStream mmstream = new MemoryStream();
imgZheng.Save(mmstream, ImageFormat.Png);//执行到此处时会出现“GDI+中发生一般性错误”这个错误。
byte[] imgByte = null;
imgByte = mstream.ToArray();
原因:在Image.Save时也会发生这种错误,sm.Close(); sr.Close();引起。注销掉就可以正常运行,但是文件被锁定。不注销掉关闭流,再Save()将引起该错误。
解决方法如下:
byte[] ImgByte = null;
MemoryStream mStream = new MemoryStream();
Bitmap bmp = new Bitmap(filename);
bmp.Save(mStream, ImageFormat.Png);
ImgByte = mStream.ToArray();
bmp.Dispose();
mStream.Close(); MemoryStream mstream = new MemoryStream(ImgByte);
imgZheng = Image.FromStream(mstream);
mstream.Close();
//此时再执行Save方法,将不会报错
MemoryStream mstream = new MemoryStream();
imgZheng.Save(mstream, ImageFormat.Png);
方法二:
StreamReader sr = new StreamReader(filename);
Stream sm = sr.BaseStream;
Image img = Image.FromStream(sm);
img = Image.FromStream(sm);
//将图像序列化给指定的流,再将流序列化为二进制数组。
BinaryFormatter binaryFormatter = new BinaryFormatter();
MemoryStream mstream = new MemoryStream();
binaryFormatter.Serialize(mstream, img);
byte[] ImgByte = mstream.ToArray();
mstream.Close();
sm.Close();
sr.Close();
//将二进制数组放到流中,再反序列为图像
MemoryStream memostream = new MemoryStream(ImgByte);
imgZheng = (Image)binaryFormatter.Deserialize(memostream);
memostream.Close();
//此时再执行Save方法,将不会报错
MemoryStream mstream = new MemoryStream();
imgZheng.Save(mstream, ImageFormat.Png);
方法三:(与方法二相比,流的赋值方式不一样,流转换为图像的方式也不一样)
StreamReader sr = new StreamReader(filename);
Stream sm = sr.BaseStream;
Image img = Image.FromStream(sm);
img = Image.FromStream(sm); MemoryStream mstream = new MemoryStream();
img.Save(mstream, ImageFormat.Png);
byte[] ImgByte = mstream.ToArray();
mstream.Close();
sm.Close();
sr.Close(); MemoryStream mmstream = new MemoryStream(ImgByte);
imgZheng = Image.FromStream(mmstream);
mmstream.Close();
//此时再执行Save方法,将不会报错
MemoryStream mstream = new MemoryStream();
imgZheng.Save(mstream, ImageFormat.Png);
GDI+中发生一般性错误 Winform Image.Save(mstream, ImageFormat.Png)引发的更多相关文章
- Image.Save()发生“GDI+ 中发生一般性错误”
从数据库中读取的图片是byte[]类型,将其转换成Image可以正常显示,但是调用image.Save()时会发生“GDI+ 中发生一般性错误”.public static System.Drawin ...
- gdi+ 中发生一般性错误 wpf解决方法
错误背景:原来在winform程序中写了一个窗口,在wpf应用程序中调用显示了这个窗口,有个头像功能,加载本地的一个图片文件,加载前进行了各种逻辑判断,效果如下: 而加载的关键代码如下面: pictu ...
- 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+中发生一般性错误的解决办法
今天在开发.net引用程序中,需要System.Drawing.Image.Save 创建图片,debug的时候程序一切正常,可是发布到IIS后缺提示出现“GDI+中发生一般性错误”的异常. 于是开始 ...
- GDI+中发生一般性错误的解决办法(转)
今天在开发.net引用程序中,需要System.Drawing.Image.Save 创建图片,debug的时候程序一切正常,可是发布到IIS后缺提示出现"GDI+中发生一般性错误" ...
- C# .NET开发图形图像程序时提示"GDI+ 中发生一般性错误"
今天突然收到一封信,说我那个极度复杂的Marshal的问题被解决了(http://www.cnblogs.com/hotcan/archive/2005/01/12/91007.html).顿时感觉好 ...
随机推荐
- 一周一个中间件-hbase
前言 hbase是大数据的生态的一部分,是高可靠性.高性能.列存储.可伸缩.实时读写的数据库系统.介于nosql和RDBMS之间.主要存储非结构化和半结构化的松散数据. 海量数据存储 快速随机访问 大 ...
- 浅谈Abp vNext的模块化设计
abp的模块化给我留下深刻的印象,模块化不是什么新概念,大家都习以为常,但是为什么要模块化,模块化的意义或者说目的是什么?也许我们思考得并不深入.难得的是abp不仅完美的阐述了模块化概念,而且把模块化 ...
- kali查看本机ip
- JZOJ 11.14 提高B组反思
JZOJ 11.14 提高B组反思 T1 题目虽然有点高大上,但是很容易懂 有一个\(d\)维空间,同时有一个长度为\(2n\)的操作序列,每个操作往某一维的正方向或反方向走一格,问多少种方案使得最后 ...
- PyQt(Python+Qt)学习随笔:QTableWidget的findItems和selectedItems搜索项和访问选中项方法
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 1.搜索项 在表格部件中,可以根据文本以及匹配模式来搜索满足条件的项,调用语法: list[QTab ...
- Hbase 简单封装(Hbase 2.0+ API)
前言 封装了一些常用的方法 添加一行数据 创建表(单列族) 创建表(多列族) 删除表 判断表是否存在 获取一行数据(根据rowkey) 获取某个列族某个列的某行数据 打印出result(方便展示数据) ...
- 阿里云服务器搭建Docker版AWVS
本文严重参考该文章:https://www.sqlsec.com/2020/04/awvs.html 阿里云服务器搭建Docker版AWVS,因为之前有使用Docker的经验,所以本文只是简述一下安装 ...
- Scrum 冲刺第七天
一.每日站立式会议 1.会议内容 1)进行每日工作汇报 张博愉: 昨天已完成的工作:与林梓琦同学完成发帖模块的交接 今日工作计划:完善发帖模块的点赞.上传图片功能 工作中遇到的困难:Mybatis的一 ...
- 图论补档——KM算法+稳定婚姻问题
突然发现考前复习图论的时候直接把 KM 和 稳定婚姻 给跳了--emmm 结果现在刷训练指南就疯狂补档.QAQ. KM算法--二分图最大带权匹配 提出问题 (不严谨定义,理解即可) 二分图 定义:将点 ...
- Android FART脱壳机流程分析
本文首发于安全客 链接:https://www.anquanke.com/post/id/219094 0x1 前言 在Android平台上,程序员编写的Java代码最终将被编译成字节码在Androi ...