• 差分
  • リロード
  • 一覧
  • 最終更新のRSS

Perl用GDライブラリを使って画像ファイルを作成する。

GDライブラリ

主にPNG形式の画像を読み込んだり作成したり操作したりすることのできるライブラリ。 C言語で書かれているがPerl, PHP, Pythonなどのバインディングもある。

ここでは、Perlバインディングを使って画像ファイルを出力する。

インストール

Ubuntuの場合、libgd-gd2-perlパッケージをインストールすればOK。

$ sudo apt-get install libgd-gd2-perl

GDライブラリでアニメーションGIFを作成

GDライブラリを使えばアニメーションGIFを作ることもできる。 1フレームごとに追加していく形で出力可能。

GIMPなどでもGIFアニメは作ることができるが、プログラムから出力することの利点として以下のようなことが言えるかと思う。

  • うまく作ればアニメーションの再調整が簡単。
  • 多数の構成物を組み合わせてアニメーションを作るのに向いている。
  • 物理シミュレーションなどを行ってアニメーションを作ることができる。

サンプル:プログレスバーを作る

プログレスバーのアニメーションを作るプログラムを作成した。

プログレスバーの外枠の画像とバーのブロック1個の画像を使ってアニメーションを構成する。最終的には24個のブロックがバーの中に入る。

ソースコードでのポイントはこのあたり。

print $img_init->gifanimbegin();
print $img_init->gifanimadd(1, 0, 0, &generateTimeInterval());

gifanimaddメソッドで追加フレームを出力する。

第一引数を1にするとそのフレーム用のローカルカラーマップが作成されるらしい。0にするとグローバルカラーマップを使う。グローバルカラーマップを使ってマッピングを共有することでファイルサイズを小さくすることができるが、今回のプログラムの場合、カラーマップを共有すると追加フレームの色がおかしくなってしまった。

どうしても直せなかったのでローカルカラーマップで出力することにした。残念。

完成品はこんな感じ。

progress.gif

リンク


添付ファイル: fileprogress.gif 826件 [詳細] filegdperl_progressbar.tar.gz 705件 [詳細]
Last-modified: 2008-08-19 (火) 20:31:17 (5719d)