swfstrip
冗長なshape(ベクター画像)データを削除するツールです。
swfmill 等の SWF生成ツールで SWFファイルを作ったけど
同じshape を複数入れちゃってサイズが思ったより膨らんじゃった。
でも、元の SWFファイルがなくて合成し直せない。どうしよう。
なんて場合に使えそう。(そんな特殊な状況あるのか?
- YSwf.phps - swfstrip.phps
使い方
以下のコマンドで、変換された SWF が標準出力に出てきます。
php swfstrip.php -f <swf_file>
どの id がどう集約されるかは、
php swfstrip.php -f <swf_file> -d
とすると、id map が表示されます。
やってる事
以下の処理をしてるだけです。
- crc32 の結果が同じ shape があったら一つだけ残して削除
- place から shape を参照するid を、残ってる shape の id に振替
- sprite 内から shape を削除したら、その分 frame_count を減算
- 全体の変化した分を header の file_length に反映
使い道思いついた
- Flash CS 以外のツールによるSWF生成で無駄な事してないか確認するのに使えるかもしれない。
課題
- unique チェックは crc32 で大丈夫?(そもそも目的違うし)。 md5 にしとく?
- 効率化できる所がまだまだある。size が同じのが複数ある時だけ crc32 とかね。