[問題] bmp檔讀取與寫入
有個小問題想請教各位前輩,
今天花了點時間寫了個小程式,想用它來批次合成bmp圖檔,
被合成的圖檔有其特性,兩張圖是同尺寸同深度,
b.bmp有固定底色,而我希望把b.bmp的這個底色濾掉,
其餘前景的部份則貼到a.bmp上去;
目前的做法是分別用fread讀入兩張圖檔後,
再以for迴圈一次讀入一個pixel的RGB值,判別是否和底色相同,
是的話擋掉,不是的話就貼到a.bmp上面去;
初步測試的結果雖然大致上OK,但卻出現了一個小狀況:
假設b.bmp中有一段是
301A5B 0D3057 FF0000 FF0000 ....
px X px X+1 px X+2 px X+3
FF0000的部份是藍色底色,以這段資料來看的話,
應該是301A5B和0D3057要被寫到a.bmp去而FF0000不要,
但打開完成後的a.bmp卻會變成像下面這樣:
301A5B 0D30FF 0000FF 0000FF ....
不知道是在讀取還是寫入時出了錯,中間少掉了1byte,
結果後面全部跟著錯掉,藍底色被判別成紅色全部寫到a.bmp去,
問題是這情況並非100%發生,有的圖一切正常,有的則會出現這問題,
而我實在找不到那1byte到底為什麼會人間蒸發...囧
不曉得有沒有哪位碰過類似的情況呢?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.231.65.41
→
07/01 22:57, , 1F
07/01 22:57, 1F
→
07/01 23:06, , 2F
07/01 23:06, 2F
推
07/01 23:26, , 3F
07/01 23:26, 3F
→
07/01 23:55, , 4F
07/01 23:55, 4F
→
07/01 23:57, , 5F
07/01 23:57, 5F
→
07/01 23:57, , 6F
07/01 23:57, 6F
→
07/02 00:02, , 7F
07/02 00:02, 7F
→
07/02 00:03, , 8F
07/02 00:03, 8F
推
07/02 00:05, , 9F
07/02 00:05, 9F
→
07/02 00:09, , 10F
07/02 00:09, 10F
早上看了一下,fread a.bmp有加b,b.bmp則沒有,
兩個都加之後就沒問題了...待會也處理一下padding的機制好了,
謝謝各位前輩的指教 <(_ _)>
※ 編輯: cometstar 來自: 61.219.70.229 (07/02 10:29)
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章