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 とかね。