1. ホーム
  2. c++

[解決済み] 軽量C++画像ライブラリ [終了しました]。

2022-03-08 05:06:38

質問

シンプルで小さく、かつ堅牢で高速な( ではなく C++用の画像ライブラリです(C++版がなければCでも十分です)。

私が求めている主な機能は

  • 無料(オープンソースであれば尚可)
  • スピード重視の設計
  • 機能的な巨大な肥大化(例えば ImageMagik これは本当に包括的なものですが、マンモスです。)
  • 小さなメモリフットプリント
  • ロード/セーブ、リサイズ、フォーマット間の変換など、必要最低限の機能のみをサポートしています。派手さはありません。
  • 壊れたファイルのためのエラーリカバリー (以下のようなもの) stb_image.c は、エラーリカバリーがかなり悪い)
  • MSVC および gcc フレンドリー (私は CxImage を何年も使ってきましたが、最新のバージョンではMSVC 2010で問題が発生し、もう積極的な開発とサポートは打ち切られたようなので、そろそろやめようと思っています)
  • JPEG2000 のような一般的な最新フォーマットを直接、あるいは libpng
  • 画像を表示するために使うつもりはないので、DirectXでもOpenGLでも構わないが、Webサイト用に画像をファイル処理するためだけに使う。
  • スタティックリンクとダイナミックリンクの両方をサポートしていると尚可
  • スレッドのサポートは大きなプラス

私が見て、ある理由で却下されたライブラリ。

  • CxImage (もう開発は行われていません)
  • ImageMagik - 巨大すぎる(そして遅い)
  • stb_image.c - エラー処理に問題があり、十分な画像形式をサポートしていません。
  • DevIL (まだ捨てていませんが、あまり見ていません。SOの同じような投稿で数分前に知っただけです) - そのサイズと機能セットからすると、私が必要とするものにはとても有望に見えますが。
  • FreeImage (DevILと同じ。近々見てみようと思うが、私の好みからすると少しサイズが大きい)
  • SOIL (stb_image.cと同じ)
  • TimThumb - これはC/C++ではなく、PHPです。

要するに、必要最低限の機能だけを犠牲にして、できるだけ小さく、できるだけ速いものが欲しいのですが、今のところ適当な候補が見つかっていないのです。

このコミュニティから何か提案があればお願いします。ただし、上に挙げた制約を念頭に置いてください。"X"が私のニーズの半分も満たしていないところで、"Xを試しましたか"という形の答えを投げてもいいとは思えません :)

編集 : DevILについてもう少し調べてみると、私が必要としているものになりそうです。軽くて、小さくて、頑丈です。あとはパフォーマンスを確認する必要があります。 ああ、それからCImage(リストで言及するのを忘れていました) - そのパフォーマンスは好きではありませんでした(控えめに言っても、テンプレートのみの実装というアイデアはかわいいと認めなければなりませんが)。

解決方法は?

を中心とした小さなライブラリを作成することを強くお勧めします。 libpng ジェイペグライブ (そして、あなたがサポートする必要があるフォーマットのための他のすべての低レベルのライブラリ)。それほど難しいことではありませんし、必要な機能はすべてコーディングすることができます。

別の方法として、そのライブラリ用の優れたc++ラッパーがすでにいくつか存在するので、それを使うこともできます。以下はその例です。