2012-08-23 59 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被配置为使用最少的一组库。