C++ で作る画像操作クラスライブラリ made by Kamisama.

GOTO 画像工房 TOP TOP

ここで公開するライブラリは、以下の機能を持っている。
1.BMP形式のファイルの読み込み・保存
2.SusiePluginを使用した画像の変換
3.画像減色・拡大縮小・グレイスケール化フィルタ
4.低レベルな画像操作 ピクセル単位での色情報取得・画像内の特定部分の切り出しなど。

能書きを書いたとしても、読んでくれるのはせいぜい十数人というところかな・・・まあ、めげずに書くことにしよう。
Windowsの画像形式といえば、BMPだ。インターネットが普及して、JPEGやGIFやPNGといったフォーマットのほうがもちろん今は多いだろうが、MS-PaintでGIFやJPEGファイルが扱えるようになったのはつい最近のことだ。
ただ、BMP画像って実は結構曲者で、ファイルを最初から読み込んでいくと、画像の上方から画像のデータが記録されているのではなく、画像の下から上に向かって上方が記録されているという不思議な構造をしている。とある本に書いてあったのだが、設計当初、数学で扱うグラフなどの座標系は下が0、上に向かうにしたがって数値が増えていくことから、画像データもそうあるべきだと考えられたらしい。それを今でも受け継いでいるのだ。
内部で使用する画像データ形式をわざわざ定義しなくても、BMP形式のまま直接画像操作をするというのもありだった。
しかし、はっきりいって「そんなことはやりたくなかった」のである。
できるだけ簡単に、画像走査がやりたかった。そのためにはボトムダウン式の画像データを扱うのではあまりに不細工である。
また、変に圧縮がかかっていては部分の抽出が非常に大変である。
最終的には、もっともシンプルな形に収めた。
保持するデータは、幅、高さ、色深度、そして画素の配列である。
画像形式は、8Bit形式のインデックスカラー、24Bit形式のフルカラーの2種類のみとした。
読み込む際に適宜変換する。
24Bit画像の場合、1画素で4Byteを使用し、32Bitで1つの画素をあらわすことにした。とにかくちょっとでも楽ををしたかったのだ。
つい最近のことだが、とあるゲーム(汗 のSusiePluginのために、32Bitの画像形式にも対応させる必要が出てきて、こうしておいてよかったと思う。

とりあえず、ソースコード一式をLZHで固めたものを公開する。
Download from here 2004/05/14 に VC7.1( VS.net2003 に入っているVC)でビルド可能なプロジェクトファイル一式が含まれている。

なお、コンパイル後は、出力された DLLファイルは ./output/debug ./output/release の下に、libファイルは ./lib ./susie_lib の下に生成される。

現在、ドキュメントが全くない状態なのだが、いちおうUML図(10分で作ったのですごく手抜き)を公開するので参考にしてほしい。
Image_Lib UML Diagram

ワークスペースを開くと、いくつかのプロジェクトが入っている。
各プロジェクトの簡単な説明はダウンロードしたファイル内の readme.txt に入っている。

そのうち、サンプルとかも用意する予定・・・

GOTO 画像工房 TOP TOP
制作 かみさま(水原 寛之) [連絡先]:byf03663 atmark nifty.ne.jp

バナー サークルバナー SourceForge.jp