2

pngファイルを開くと:

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

... 4チャンネル(RGBA)の画像を取得する予定です。しかし、私は常に代わりに3チャンネル(RGB)の画像を取得します(画像が半透明であっても):image.spectrum()は4ではなく3を返します。

私のアプリケーションでは、PNGファイルを開くときに常に4つのチャネルを取得する必要があります。CImgは多くの便利な機能を備えた人気のあるライブラリのように見えます(そのうちのいくつかは私の画像処理アプリケーションで将来役立つかもしれません)ので、アルファチャネルでPNGファイルを失うことなく開くことは不可能だと思います。助言がありますか?

CImgがPNGファイルを操作するための優れたツールではない場合は、他の使いやすいライブラリを提案してください。現時点で私にとって重要なのは、PNGを4チャネルのunsigned char imageとして読み書きできることと、画像のサイズとデータを取得する関数(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ファイルを最も完全にサポートするライブラリの1つであることがわかりました。適切なライブラリを使用できるようにするには、いくつかの構成フラグを定義するだけです。デフォルトでは、CImgは最小限のライブラリセットを使用するように構成されています。

于 2012-08-23T07:54:53.767 に答える
0

別のライブラリの提案(私が使用したもので、imoは非常に簡単です): http: //www.imagemagick.org/script/api.php#c

于 2012-08-23T06:09:46.107 に答える