這幾天對於解無壓縮的 Indexed PNG 圖檔有了點進展。對於之前畫面會扭曲的原因,後來發現是因為每個讀到的資料區塊的第一個位元都要略過… (別問我為什麼,我只是發現它並非屬於在真正的資料裡頭) 結果就真的,每第一個位元都跳過後,解出來的資料就完全正確!
之後很快的就進行下一步… 解無壓縮的 24 bits RGB 格式圖檔,結果馬上在解資料上就錯了。當時還蠻火大的 ^%$#@! 因為代表之前寫好的解無壓縮的程式碼在 RGB 格式會有錯… 那會不會代表我要針對不同格式都要有一套解壓縮的方法?那哪寫的完…
後來靜下心來,看圖檔的資料… 慢慢的對照… 結果發現是 LEN 給的並不是真正所要讀的長度。天啊~ 之前要跳過每第一個位元,現在又要因為 RGB 而計算真正的資料長度… 為什麼不像 DEFLATE 規格裡寫的那麼簡單?看來我要再找一天來看看 libpng & zlib 的程式碼 (不好懂),看到底是要怎樣寫才對…
最後附上剛剛的成果:顯示一張 24 bits 的 PNG 圖檔。
