Re: [心得] 用LockBits處理影像時..

看板C_Sharp (C#)作者 (X'mas)時間19年前 (2006/12/23 13:41), 編輯推噓0(001)
留言1則, 1人參與, 最新討論串3/6 (看更多)
※ 引述《gz ()》之銘言: : ※ 引述《euleramon (X'mas)》之銘言: : : 剛才de掉一個bug,發現到C#一個特別(or 奇怪o_Oa")的地方.. : : load進一張8bits的灰階影像,如果用LockBits方法去access image, : : coding時可能會被誤認作32bits機會...。 : : // test image1 : : image1 = new Bitmap(myImageFileNameStream); : : // test image2 : : image2 = new Bitmap((Image)image1.Clone()); : ... : : 心得:真是不方便,不自己debug測看看真的還不知道... XD" : 不奇怪 : 沒有明確指定的話, 建立一個Bitmap物件預設都是Format32bppArgb : 所以這也不是什麼bug, 跟LockBits也沒有關係 : 真要說bug的話, 上面的程式 : image2 = (Bitmap)image1.Clone(); : 即可, PixelFormat不會變. : 不需要又是new又是upcasting的多此二舉 覆蓋原檔時,C#內建是需要把原始資源解lock後才行,否則會有exception出現.. 當時我還需要存原始影像,後來測試發現原始影像需用像降的temp影像儲存才行: image2 = new Bitmap((Image)image1.Clone()); 如果寫成 image2 = (Bitmap)image1.Clone(); 還是會有 exception 我不曉得確切原因為何,但就先把這方式硬記下來 @@" -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.116.246.39

12/31 19:31, , 1F
如果降寫image2 = new Bitmap((Image)image1);也不會bug
12/31 19:31, 1F
文章代碼(AID): #15ZC6ZaF (C_Sharp)
討論串 (同標題文章)
文章代碼(AID): #15ZC6ZaF (C_Sharp)