概要
C++でグラフや、スペクトログラムや、美麗な画像とかを作りたかったので、サーベイしました。
対象読者
- C++で美麗な画像を作りたい方
結論
CImgを使えばOK
※ 実際に使ってみたら変わるかもしれませんが
成果物
さっそく美麗なスペクトログラムを作りました。導入が簡単ではかどりました。
要件
- 必ずやりたいこと
- ピクセル単位で画像をいじれる
- pngかbmpで出力できる
- できればやりたいこと
- テキスト描画
- 各種美麗なエフェクト
- アンチエイリアスのかかった美麗な線を引く
- 簡単にグラフを描ける
- 導入が楽
- ライセンスはサーバー側で使った場合に、ソースコードを公開しなくても良いやつ
サーベイ
OpenCV
導入がめんどくさそうなのでなしです。
cairo
ホームページがダサくてgithubがメインになっていないので、古そう。
Ion
github star 1325
かっこよさそうですが、今回の要件に必要ない依存が増えそう。
libigl
http://libigl.github.io/libigl/
https://github.com/libigl/libigl
github star 1257
3Dのメッシュとかをいじる系で、今回の要件にあわなそう。
PANDA3D
http://www.panda3d.org/
3D系。要件にあわなそう。
partio
https://github.com/wdas/partio
A library for particle IO and manipulation。要件にあわなそう。
libgd
https://github.com/libgd/libgd
github star 367
なにかで2011年頃に使った記憶がある。なんだっけ?
C++かRubyで使った記憶がある。
独自Captchaだっけ?
使用感は普通
https://libgd.github.io/manuals/2.2.5/files/preamble-txt.html
CImg
https://github.com/dtschump/CImg
http://cimg.eu/
github star 537
CImg is self-contained, thread-safe and highly portable. It fully works on different operating systems (Unix,Windows,MacOS X,*BSD,...) and is compatible with various C++ compilers (Visual C++,g++,clang++,icc,...).
導入のしやすさでは良さそう。
使用感
http://cimg.eu/reference/group__cimg__tutorial.html
表示機能も内包しているみたい。
http://cimg.eu/CImg_slides.pdf
できることが紹介されているスライド。
pngにも対応しているらしい。
Generic Image Library
https://www.boost.org/doc/libs/1_56_0/libs/gil/doc/index.html
boostに含まれているのか。
CImgより優れたポイントがないなら、調べる必要なさそう。
Magick++
http://www.imagemagick.org/script/magick++.php
CImgより優れたポイントがないなら、調べる必要なさそう。
まとめ
CImgが以下の点で良さそう。
- 導入しやすい
- 最低限やりたいことを満たしている
- 線とかテキストとかも描ける