使用Image.FromFile取磁盤上的圖片時,這個方法會鎖定圖片文件,而且會導致內存占用增大, 有幾種方法解決:
一:將Image類轉換成Bitmap類
System.Drawing.Image img = System.Drawing.Image.FromFile(filepath);
System.Drawing.Image bmp = new System.Drawing.Bitmap(img);
img.Dispose();
然后使用 bmp作為PictureBox的圖片源
二:從流中讀取
FileStream fileStream = new FileStream("文件名", FileMode.Open, FileAccess.Read);
pictureBox1.Image = Image.FromStream(fileStream);
fileStream.Close();
fileStream.Dispose();
原因:一個圖像對象從一個文件構造時該文件仍保留鎖定對象的生存期。所以關鍵是要使用 Graphics.DrawImage()方法或Drawing.Bitmap()方法來將映像復制到新位圖Bitmap對象,然后Bitmap和Graphics就可以釋放了。或者用使用FileStream的方式將文件讀成流。