今天在開發時候遇到了這個問題,我的情景是這樣的:

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();
                        }