5-3ImagemagickTips367 動的にGIFアニメーションを作る
Level3
PointaddImage()を使う
リスト1の3〜10行目でまず各信号(赤、黄、青)の点灯中及び消灯中の円を描画します。ここではsignal_color関数をコールし、55〜62行のsignal_color関数内で、imagickDrawクラスを使っています。12行〜28行は、信号の各状態のオブジェクトを作成します。例えば、青信号のときは、黄・赤は消灯します。赤信号のときは、黄・青が消灯します。そのそれぞれの状態をオブジェクトにしています。65〜72行のsignal関数をコールすることで、Imagickオブジェクトを生成し、信号の枠を作ります。続いて、青信号のときは「青が点灯・黄色消灯・赤消灯」という風にimagick::drawImage()メソッドをコールしていきます。30行目から実際のGIFアニメーションを作成します。imagick::setImageDelay()メソッドは、GIFアニメーションの1枚目と2枚目の間をどの程度の時間を開けるかを設定します。単位はミリ秒ですので、300ミリ秒で3秒となります。
32行目のimagick::setImageIterationsは、GIFアニメーションのループ回数を指定します。0で無限ループになります。
最後に41行目でGIFアニメーションとして、ファイルに書き出しを行います。GIFアニメーションの場合は、これまでのように直接オブジェクトをブラウザに出力してもアニメーションができませんので、一度ファイ
この記事は会員限定です。会員登録をすると続きをお読みいただけます。
ログイン / 新規登録