Re: [心得] 用LockBits處理影像時..
※ 引述《euleramon (X'mas)》之銘言:
: ※ 引述《gz ()》之銘言:
: : ...
: : 不奇怪
: : 沒有明確指定的話, 建立一個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
: 我不曉得確切原因為何,但就先把這方式硬記下來 @@"
如果降寫 image2 = new Bitmap((Image)image1); 也不會有exception..
我剛回去檢查一下,發現好像是降的原因:
如果寫成 image2 = (Bitmap)image1.Clone();
然後再將image1的fileStream關掉:myImageFileNameStream.Close();
如果再access影像image2,就會產生降的例外訊息
"Cannot access a closed file"
所以我感覺 .net 裡的
Class a = object.Clone()
好像並不能完全取代
Class a = new Class(object)
---
不曉得對不對".. 不過還是分享看看心得
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.116.246.39
※ 編輯: euleramon 來自: 140.116.246.39 (12/31 19:42)
※ 編輯: euleramon 來自: 140.116.246.39 (12/31 19:42)
討論串 (同標題文章)
C_Sharp 近期熱門文章
PTT數位生活區 即時熱門文章
7
20