ImageConverter by kanegon 1. 概要 画像ファイルの拡大縮小および画像フォーマットの変換を行います。 対応画像フォーマットには Bitmap、Jpeg、GIF、PNG があります。 このツールは GDI+ の実装サンプルとして作成したもので、機能自体特別なものはあり ません。興味があればソースの方を見てみてください。もっともソースの方もたいした ことを行っているわけではありませんが。 2. 動作環境 Win 2K または XP であれば問題なく動作するはずです。 Win 9x でも問題ないと思いますが、確認できていません。 3. インストール 1) ファイルの展開 配布された圧縮ファイルを任意のフォルダに展開します。 圧縮ファイルには以下のファイルが含まれています。 特別なセットアップ作業は必要ありません。 imgconv.exe # アプリケーション本体 readme.txt # このファイル gdiplus.dll # redistributable files for GDI+ imgconv をインストールしたフォルダを PATH 環境変数に追加しておくと便利です。 4. アンインストール 1) ファイルの削除 展開したすべてのファイルを削除してください。 5. 使い方 入力例としては、例えば a.jpg のファイルを b.gif に形式を変更して保存する場合、 Windows のコマンドプロンプトを開き、 C:\>imgconv -type gif src.bmp dst.gif のように入力します。 6. パラメタ詳細 usage: imgconv -type [-width ] [-height ] [-keepaspect] [-quality ] -type 保存形式 (bmp/jpeg/gif/png) -width 幅 -height 高さ -keepaspect アスペクト比を保存(デフォルト) -quality jpeg 保存品質 入力ファイル名 出力ファイル名 必須項目は保存形式、入力ファイル名、出力ファイル名です。 アスペクト比保存はデフォルトが有効であり、無効にするには -keepaspect- のよう にオプションの後ろに '-' をつけたパラメタを指定します。 アスペクト比保存が有効である場合、幅と高さの両方を指定しても、縦横比を崩さず に、指定された矩形に収まる(内接する)矩形サイズに調整されます。 7. ソースのこと GDI+ は WindowsXP から標準搭載され、従来の Windows のグラフィックを拡張する機 能ですが、Win98/WinMe/NT4/Win2K の各 OSにおいても、別途 Microsoft から提供され ている dll ファイルを使用することで同じ機能を使用できます。 このプログラムは GDI+ の機能を使ってフォーマット変換と拡大縮小を行うサンプルと して作成しました。 GDI+ は 2004年9月に JPEG 脆弱性問題のために悪い面で一躍有名になってしまいまし たが、非常に高機能でまた取り扱いも容易なライブラリ(API?)です。昔ながらの GDI プログラミングしか行ったことのない人は一度使ってみることをお勧めします。 たとえば、Jpeg ファイル(a.jpg)を読み込んで PNG ファイル(b.png)に変換する場合、 const CLSID CLSID_PNGCodec = {0x557CF406,0x1A04,0x11D3,{0x9A,0x73,0x00,0x00,0xF8,0x1E,0xF3,0x2E}}; void convert() { Image image(L"a.jpg"); image.Save(L"b.png", &CLSID_PNGCodec, NULL); } これだけです。 実際には、初期化および終了処理やエラーチェックなどを行うため、2行というわけに はいきませんが、この程度であれば、ヘッダの解析やデバイスコンテキストなどを一切 気にせず処理することができます。 開発用のヘッダとライブラリは VS.NET 2003 では標準で含まれています。 VC++6.0 を使っている場合、別途 Microsoft から Platform SDK を入手する必要があ りますが同様に開発が可能です。 イメージを GIF に変換するとき、そのまま GDI+ だけでも変換は可能ですが、ハーフ トーンパレットが生成されてしまうため、見栄えが悪くなります。 そのため、ツールの減色処理部分だけは GDI+ の機能ではなく、以下のページにある、 DHGL の MedianCut の処理を参考に独自の減色処理を組み込んでいます。 Delphi Graphic Secrets サポートWeb http://www.asahi-net.or.jp/~HA3T-NKMR/DGS/index.htm 8. 今後の予定 - 機能整理 256色の扱いとか、透過色の扱いとかについて検討 - 既存ファイルを上書きするとき、警告を出す - 一括処理 ワイルドカードサポート? - エラー処理をまともにやる - ソース整理 - DLL化 - COM化 - 減色能力改善 任意の色数を指定 - 回転 - 拡大率を指定 - プログレッシブjpeg/gif/png の扱い整理 - 外部カスタムフィルタの指定 全部は無理だが、ソース整理と一括処理、COM 化あたりはやっておきたい。 そのうちに。 9. 使用条件 本プログラムおよびソースコードは自由に使用することができます。 本プログラムおよびソースコードの配布や改変に制限はなく、商用利用も可能としま す。改変した生産物に著作権表示も不要です。 本プログラムおよびソースコードは無保証です。 本プログラムおよびソースコードの使用において生じた如何なる損害についても作者 は一切の責任を負いません。 10. 修正履歴 2005.03.10 ver0.00 プロトタイプ作成