700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > GDI+中发生一般性错误的解决办法

GDI+中发生一般性错误的解决办法

时间:2020-11-10 01:28:48

相关推荐

GDI+中发生一般性错误的解决办法

开发的过程中遇到了这个错误想要记录下来!

我是在保存图片文件时遇到的这个错误。

网上也搜了很多资料,试过之后还是会出错,代码其实也都大同小异没有太大区别,先把我遇到问题的经过描述一下:

我要做的是读取身份证信息,其中身份证的证件照也是需要存储下来的,身份证中的照片是二进制流读取的,需要在picturebox控件中展示,我的思路是:

1.读取二进制流,写到内存中

byte[] imgData = new byte[1111];int length = 1111;//读取流并填充imgDataMemoryStream myStream = new MemoryStream();for (int i = 0; i < length; i++){myStream.WriteByte(imgData[i]);}

2.将二进制流转换为图片并绑定到控件中

Image myImage = Image.FromStream(myStream);picCredentialsPhoto.Image = myImage;

3.生成jpg图片

_ImgStorePath = AppDomain.CurrentDomain.BaseDirectory + "img\\"+lblFileName.Text + ".jpg;//照片另存if (!File.Exists(_ImgStorePath)){File.Create(_ImgStorePath);}using (Bitmap bmp = new Bitmap(picCredentialsPhoto.Image.Width, picCredentialsPhoto.Image.Height)){Graphics g = Graphics.FromImage(bmp);//实例一个画板的对象,就用上面的图像的画板g.DrawImage(picCredentialsPhoto.Image, 0, 0);//把目标图像画在这个图像文件的画板上using (MemoryStream mem = new MemoryStream()){bmp.Save(_ImgStorePath, System.Drawing.Imaging.ImageFormat.Jpeg);}}

代码执行到bmp.Save(_ImgStorePath, System.Drawing.Imaging.ImageFormat.Jpeg); 时抛出异常“GDI+中发生一般性错误”。

解决办法:

经过调试及多次测试,发现问题在我创建文件那一步,我在创建文件时把图片文件也创建好了,之后再区保存图片的时候就出错了,正确代码如下:

//区别开始_ImgStorePath = AppDomain.CurrentDomain.BaseDirectory + "img\\";if (!Directory.Exists(_ImgStorePath)){Directory.CreateDirectory(_ImgStorePath);}_ImgStorePath += lblVisNumber.Text + ".jpg";//区别结束using (Bitmap bmp = new Bitmap(picCredentialsPhoto.Image.Width, picCredentialsPhoto.Image.Height)){Graphics g = Graphics.FromImage(bmp);//实例一个画板的对象,就用上面的图像的画板g.DrawImage(picCredentialsPhoto.Image, 0, 0);//把目标图像画在这个图像文件的画板上using (MemoryStream mem = new MemoryStream()){bmp.Save(_ImgStorePath, System.Drawing.Imaging.ImageFormat.Jpeg);}}

这样就不会报错了

别的同仁有可能是因为其他原因报错的,只是记录一下个人遇到的问题!有需要可借鉴

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。