GDI+中發(fā)生一般性錯誤之圖片轉(zhuǎn)化為字節(jié)數(shù)組 收藏 項目中前一次遇到字節(jié)數(shù)組轉(zhuǎn)化為圖片時偶爾出現(xiàn)“GDI+中發(fā)生一般性錯誤”,這回是圖片轉(zhuǎn)化為字節(jié)數(shù)組時出現(xiàn)這種情況。經(jīng)研究解決辦法如下: 原代碼(出錯代碼)如下: 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(); } } 兩種方法實際上都是新建了一個與原圖一模一樣的副本,在木子的技術(shù)空間(http://www.cnblogs.com/szulm/articles/1227060.html)找到這么一句話“Bitmap 對象或一個 圖像 對象從一個文件, 構(gòu)造時該文件仍保留鎖定對于對象的生存期。 因此, 無法更改圖像并將其保存回它產(chǎn)生相同的文件。”個人認(rèn)為發(fā)生GDI+一般性錯誤的原因是對象引用與對象的生存期的問題。 本文來自CSDN博客,轉(zhuǎn)載請標(biāo)明出處:http://blog.csdn.net/huhai463127310/archive/2008/11/25/3372988.aspx
|
|