cimg_library :: CImgList <T>クラスは、cimg_library :: CImgイメージのリストを表します。 たとえば、一連の画像(フレームなど)を保存するために使用できます。
cimg_library :: CImgDisplayクラスは、グラフィカル環境で画像または画像のセットを表示します。 このクラスのコードはシステムに大きく依存していると安全に言うことができますが、実際には、プログラマーには関係ありません。 環境変数はCImgライブラリを介して自動的に設定されます。
cimg_library :: CImgExceptionクラス (およびそのサブクラス)は、エラーが発生した場合に例外を処理するためにライブラリによって使用されます。 例外は、try {..} catch(CImgException){...}を使用して処理されます。 サブクラスを使用すると、エラーの種類を正確に判断できます。
これら4つのクラスの知識は、CImgライブラリの機能を最大限に活用するのに十分です。
こんにちは世界!
まあ、大丈夫、かなりたくさん言われています。 CImgを使用して作成された基本プログラムがどのように機能するかについて、より視覚的な例を検討しましょう。
#include "CImg.h" using namespace cimg_library; int main() { CImg<unsigned char> img(640,400,1,3); img.fill(0); unsigned char purple[] = { 255,0,255 }; img.draw_text(100,100,"Hello World",purple); img.display("My first CImg code"); return 0; }
プログラムの各行をより詳細に検討してみましょう。
CImgライブラリのヘッダーファイルを接続します
#include "CImg.h"
型宣言を容易にするためにcimg_library名前空間を使用します
using namespace cimg_library;
プログラムの主な機能を宣言する
int main() {
サイズ640 * 400 * 1ピクセル(サイズが640 * 400 * 1ピクセル)の、 unsigned charピクセルタイプのイメージインスタンス-imgを作成しましょう(この場合、1はイメージが3次元ではなく平坦であることを意味します)。 各ピクセルには、赤、緑、青の3つのチャンネルがあります。 これは、コンストラクターの最後のパラメーターによって示されます。
CImg<unsigned char> img(640,400,1,3);
画像を黒で塗りつぶします(「0」は黒を意味します)
img.fill(0);
変数を紫と宣言します:色になります
unsigned char purple[] = { 255,0,255 };
画像のポイント(100,100)からテキスト「Hello World」を紫色で引き出します
img.draw_text(100,100,"Hello World",purple);
「最初のCImgコード」というタイトルの画像をグラフィックスウィンドウに表示します
img.display("My first CImg code");
プログラムを終了する
return 0;
ご覧のとおり、CImgライブラリは非常に使いやすく、メソッドの名前は直感的です。 上記のコードはさらにコンパクトに書くことができますが:
#include "CImg.h" using namespace cimg_library; int main() { const unsigned char purple[] = { 255,0,255 }; CImg<unsigned char>(640,400,1,3,0).draw_text(100,100,"Hello World",purple).display("My first CImg code"); return 0; }
スクリーンショット(クリック可能):

将来、さらに複雑な、さらに複雑な例をいくつか分析することを願っています!
プロジェクトサイト: cimg.sourceforge.net
ご清聴ありがとうございました!
PS
- Linuxでは、次のコマンドでコンパイルされます。
g++ -o hello hello.cpp -O2 -L/usr/X11R6/lib -lm -lpthread -lX11
(-O2なしでも実行できます) - 十分な長さのコンパイル(Linux Gentoo、Pentium®デュアルコアCPU T4500 @ 2.30GHz):
$ time g++ -o hello hello.cpp -O2 -L/usr/X11R6/lib -lm -lpthread -lX11
real 0m28.397s
user 0m27.991s
sys 0m0.265s
28秒(!) Hello、World!の場合 じゃないですか? 「-O2」なしでは3倍高速になりますが。 - バイナリのサイズは742Kで、一般にコンパイル時間に匹敵します!