2

当我打开 png 文件时:

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() )。

4

2 回答 2

4

CImg 是一个非常好的库,可以处理 .png 文件(包括 4 通道)。对于 CImg 对 png 文件的原生支持,您需要将代码与 libpng 库链接,否则 CImg 将使用对 ImageMagick 的转换工具的外部调用来读取 .png 文件。要在 CImg 中启用完整的 .png 支持,只需使用定义的“cimg_use_png”宏编译您的代码,并将其与 libpng 链接,您就完成了:

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

我发现 CImg 是对 .png 和 .tiff 文件支持最完整的库之一,您只需定义一些配置标志以允许它使用正确的库。默认情况下,CImg 配置为使用最少的库集。

于 2012-08-23T07:54:53.767 回答
0

对另一个库的建议(我已经使用过并且 imo 很容易):http ://www.imagemagick.org/script/api.php#c

于 2012-08-23T06:09:46.107 回答