2012-08-23 54 views
2

當我打開PNG文件:如何使用CImg庫打開PNG而不丟失Alpha通道?

CImg<unsigned char> image("image.png"); 

...我希望得到4通道(RGBA)圖像。但我總是得到3通道(RGB)圖像(即使圖像是半透明的):image.spectrum()返回3而不是4.

在我的應用程序中,當我打開PNG時總是需要4個通道文件。 CImg看起來像流行的庫,有很多有用的功能(其中一些在我的圖像處理應用程序中未來可能會有用),所以我很難相信用alpha通道打開PNG文件是不可能的,而不會丟失它。有什麼建議麼?

如果CImg不是很好的使用PNG文件的工具,隨意推薦一些其他簡單易用的庫。現在對我來說唯一重要的事情是能夠讀寫PNG作爲4通道無符號字符圖像,並具有獲取圖像尺寸和數據的功能(如image.width()或image.data())。

回答

3

CIMG是一個非常好的庫.png文件的工作(包括4通道)。 對於CImg對png文件的本地支持,您需要將您的代碼與libpng庫鏈接,否則CImg將使用對ImageMagick的轉換工具的外部調用來讀取.png文件。 要啓用CIMG充分巴紐支持,只是定義的「cimg_use_png」宏編譯代碼,並與libpng的鏈接它,你就大功告成了:

g++ -o foo foo.cpp -Dcimg_use_png -lpng -lz -lX11 -lpthread 

我發現CIMG是的一個庫提供了對.png和.tiff文件最全面的支持,您只需定義一些配置標誌以允許它使用正確的庫。 默認情況下,CImg被配置爲使用最少的一組庫。