作者stelliver (嘖嘖星人)
看板C_Sharp
標題[問題]擷取影像 出現其他地方正在使用
時間Wed Sep 21 13:05:16 2011
最近用CCD來擷取影像來做影像處理的工作,其中一段是將影像的
大小做一個裁切。但是在執行數次後就會出現"其他地方正在使用物件"的
錯誤訊息。以下是我的程式碼:
private Bitmap ImageSizeTransfer(Bitmap bmp, int partwidth, int partheight)
{
Bitmap newbmp=new Bitmap(partwidth,partheight,PixelFormat.Format24bppRgb);
Graphics g = Graphics.FromImage(newbmp);
g.DrawImage(bmp, 0, 0,
new Rectangle(0,0,partwidth,partheight),
GraphicsUnit.Pixel);
g.Dispose();
return new Bitmap(newbmp)
}
錯誤會出現在g.DrawImage這一句。
想請教如何解決這個問題,謝謝大家。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.135.97.11
※ 編輯: stelliver 來自: 140.135.97.11 (09/21 13:08)
1F:→ ONLYSMART:return newbmp 不就好了? 09/21 14:08
2F:→ stelliver:我試過 return newbmp 跟 return new bitmap一樣會出錯 09/21 14:36
3F:→ ONLYSMART:剪出來的Bitmap, 用完後有沒有dispose(); 09/21 15:03
4F:→ stelliver:我嘗試設一個bmp1去承接bmp後再做dispose一樣會出現錯誤 09/21 15:55
5F:→ stelliver:但是這次錯誤是錯誤是出現在bmp1那邊 09/21 15:55
6F:→ ONLYSMART:釋放後還要設成null 有嗎?你這方法除了少例外處理, 其他 09/21 16:25
7F:→ ONLYSMART:跟我用的差不多,所以我看不出那裏有錯, 等高手回答吧! 09/21 16:25
8F:推 Laluth:用using包起來試看看 09/21 17:15
9F:→ stelliver:有設成NULL,還是無法解決。using不會用去爬文 晚點回報 09/21 18:44
10F:→ stelliver:我嘗試過了 雖然不確定有沒有用對但是沒有效果 09/21 19:55
11F:→ stelliver:我找到問題了,但是為什麼會這樣子不明 09/21 20:52
12F:→ stelliver:錯誤在在顯示圖片的時候會跟裁切的程式碼衝突 09/21 20:52
13F:→ stelliver:實際衝突的點不清楚。解決方式是在顯示的時候 09/21 20:53
14F:→ stelliver:用一個picturebox.image=new Bitmap(image); 09/21 20:55
15F:→ proach:請查一下 Bitmap.LockBits Bitmap.UnlockBits 09/22 21:29