最近編寫了一個驗(yàn)證碼識別軟件。其中對png、jpg圖片進(jìn)行二值化處理時(shí),出現(xiàn)了錯誤:具有索引像素格式的圖像不支持SetPixel解決方案。從字面上來看,這說明我對一個具有索引色的圖片進(jìn)行了直接RGB顏色設(shè)置,而索引色圖片的顏色來自調(diào)色板,所以這操作是非法的。看見網(wǎng)上的解決方法都不靠譜,特寫此文,以助新手。
若是C++中,我會將調(diào)色板偏移分析,然后對顏色數(shù)組進(jìn)行一下轉(zhuǎn)換。但是在功能強(qiáng)大的.Net中,顯然無需這么做:Bitmap對象自帶Clone()函數(shù)。我只要Clone一個Bitmap對象,并將PixelFormat設(shè)置成無索引格式即可。對于我這個軟件,我使用的是Format24bpPRgb格式(指定格式為每像素24位;紅色、綠色和藍(lán)色分量各使用8位)。
Bitmap img1 = new Bitmap(paths);Bitmap imgtarget = img1.Clone(new Rectangle(0, 0, img1.Width, img1.Height),PixelFormat.Format24bppRgb);//Do something.
新聞熱點(diǎn)
疑難解答
圖片精選