SWFEditor 0.42 release - replaceBitmapData

今回のリリースは replaceBitmapData の提供が目的です。

  • replaceJpegData や PNGData みたいに、画像フォーマット毎に違うメソッドを使わなくて良いです
  • SWF 内の入れ替えたい画像を、内部ID 以外に、画像サイズや色で指定出来るようにしました。


に対して、横サイズ100で色の青成分が255位の画像を入れ替えたい場合、

<?php
$swf = new SWFEditor();
$swf->input($swfdata);
$image_cond = array('width' => 100, 'blue' => 255);
$gifdata = file_get_contents('aria.gif');
$swf->replaceBitmapData($image_cond, $gifdata);
echo $swf->output();

を実行すると、

が出力されます。

画像形式を選ばない

今まで、ビットマップ画像のファイル形式に応じて、replaceJpegData, replacePNGData, replaceGIFData を使い分けましたが、replaceBitmapData は、どの画像形式を渡しても動作します。
内部的には、画像データの先頭3,4バイトで画像形式を判別して、replaceJpegData 等の対応するメソッドを呼んでいるだけです。

条件指定が増えた

SWF 内部の入れ替え対象の画像を画像IDで指定する方式だと、SWF をパブリッシュする毎に ID が替わる可能性があって管理が面倒ですが、replaceBitmapData では画像サイズと画像の色の組み合わせで指定する事が出来ます。

ただし、画像の色指定は少し重た目*1なので、可能であればサイズ指定をお勧めします。

*1:SWF 内部の画像ピクセルを取りだすのに、zlib 伸長の処理が必要な為