GDI+中发生一般性错误之图片转化为字节数组 收藏 项目中前一次遇到字节数组转化为图片时偶尔出现“GDI+中发生一般性错误”,这回是图片转化为字节数组时出现这种情况。经研究解决办法如下: 原代码(出错代码)如下: public static byte[] imageToByteArray(Image imageIn) { using (MemoryStream ms = new MemoryStream()) { if (imageIn != null) { imageIn.Save(ms,ImageFormat.Jpeg); } return ms.ToArray(); } } 方法一: public static byte[] imageToByteArray(Image imageIn) { using (MemoryStream ms = new MemoryStream()) { if (imageIn != null) { Bitmap t=new Bitmap (imageIn); t.Save(ms,System.Drawing.Imaging.ImageFormat.Jpeg); } return ms.ToArray(); } } 方法二: public static byte[] imageToByteArray(Image imageIn) { using (MemoryStream ms = new MemoryStream()) { if (imageIn != null) { Bitmap pic = new Bitmap(imageIn.Width, imageIn.Height); Graphics g = Graphics.FromImage(pic); g.DrawImage(imageIn, 0, 0, imageIn.Width, imageIn.Height); g.Dispose(); pic.Save(ms, ImageFormat.Jpeg); pic.Dispose(); } return ms.ToArray(); } } 两种方法实际上都是新建了一个与原图一模一样的副本,在木子的技术空间(http://www.cnblogs.com/szulm/articles/1227060.html)找到这么一句话“Bitmap 对象或一个 图像 对象从一个文件, 构造时该文件仍保留锁定对于对象的生存期。 因此, 无法更改图像并将其保存回它产生相同的文件。”个人认为发生GDI+一般性错误的原因是对象引用与对象的生存期的问题。 本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/huhai463127310/archive/2008/11/25/3372988.aspx
|
|
来自: orion360doc > 《图片转化文字》