今天在开发时候遇到了这个问题,我的情景是这样的:
using (MemoryStream ms = new MemoryStream(item.ImageData)) { Image Image = Image.FromStream(Ms); imageSlider1.Images.Add(Image); Ms.Close(); Ms.Dispose(); }
使用内存流读取数据库中的图片数据,然后把流加载到Image对象,结果出现异常:GDI+ 中发生一般性错误。经查找网上一些大佬资料得出,通过这种方式获取Image,流不能被释放。
思路:将图片内容重写到一个新的对象
using (MemoryStream ms = new MemoryStream(item.ImageData)) { Image Image = System.Drawing.Image.FromStream(ms); Bitmap Bmp = new Bitmap(Image.Width, Image.Height); Graphics Grp = Graphics.FromImage(Bmp); Grp.DrawImage(Image, 0, 0); imageSlider1.Images.Add(Bmp); ms.Close(); }