GIFファイル

CBuiderで扱う画像はBMPファイルであり,GIFファイルはサポートされていない.そこで,イメージを保存しようするとファイルサイズは極めて大きいものになる.MapMap3で3000×3000ピクセルのBMPファイルは何と35MBになってしまう.

これでも,クリップボードコピーやBMPファイルで保存して,画像ソフトで,JPEGやGIFに変換すれば,なんとか小さいサイズで保存することもできるが,もともと巨大サイズの画像データを扱うので,時間もかかり,面倒である.直接,GIFファイルに落とすことはできないものかと思っていたところ,次のところでフリーウエアとしてCBuilder用のコンポーネントが公開されていることが分かった.

http://www.melander.dk/delphi/gifimage/

ここから,gifimage.exeダウンロードして実行すれば,CBuilderを探してそこにインストールされる.このコンポーネントをCBuilderで「コンポーネントのインストール」を実行してCBuilderに組み込んでしまえば,GIFファイルの読み込みおよび書き出しが極めて簡単にできるようになる.

こんなすばらしい機能を用意してくれたAnders Melander さんに感謝!感謝!

コンポーネントのインストール
さて,TGIFImageコンポーネントをインストールしよう.

・メニューから「コンポーネントのインストール」をクリックして,ユニットファイル名に参照ボタンですでにインストールされた
    gifimage.pas
を設定して,OKボタンをクリックする.拡張子がpasであることに注意.プログラム自体はPASCALで書かれている.というか,これはDelphiのコンポーネントであって,そうだから,CBuilderでも使えるということ.ファイルの種類で*.pasを選べば表示される.

・OKをクリックして,コンパイルボタンを押して,正常にコンパイルされれば,インストールボタンを押して終わり.

・ヘッダファイルgifimage.hppをCBuilderのIncludeディレクトリにコピーする.



プログラミング

プログラミングは極めて簡単です.

GIFファイルjapan.gifを読み込んでImage1に表示し,BMPファイルjapan.bmpをImage2に表示した後,japan.bmpをGIFファイルに変換してmyjapan.gifにセーブし,japan.gifをBMPファイルに変換してmyjapan.bmpに変換するプログラムは,ざっと,次のような感じです.

#include   <gifimage.hpp>    //ユニットのヘッダファイルに

TGIFImage *GIF = new TGIFImage();
                //GIFオブジェクトの宣言
Graphics::TBitmap *BMP =new Graphics::TBitmap();
                //BMPオブジェクトの宣言


GIF->LoadFromFile("japan.gif");    //GIF読み込み
Image1->Picture->Assign(GIF);    //表示

BMP->Assign(GIF);            //GIGをBMPに変換
BMP->SaveToFile("myjapan.bmp");  //保存

BMP->LoadFromFile("japan.bmp");  //BMP読み込み Image2->Picture->Assign(BMP);   //表示

GIF->Assign(BMP);            //BMPをGIFに変換
GIF->SaveToFile("myjapan.gif");    //保存

delete GIF;    //GIFオブジェクトの削除
delete BMP;   //BMPオブジェクトの削除


たったこれだけで,GIFファイルの操作ができるのだからすばらしい.
本当は,もっと機能があって,Animate GIFやTransparent GIFの操作もできるようなのだけど,まだ,マニュアルをよく読んでいないのでいずれまた紹介したい.