SWFバイナリ編集のススメ第六回 (おさらい編)

こんにちは。メディア開発のよやです。

そろそろ SWF シリーズの記事は打ち止めにしようか迷っていましたが、暖かい励ましのメールを頂いたので、もう少し続きます。ご声援ありがとうございます。

今、作成中の Shape 編(ベクター画像)の記事が長くなりそうですので、一度、これまでの内容をおさらいします。

記事一覧 (第一回~第五回)

実は、記事を出した後でも図を追加したり文言も訂正を重ねています。ぱっと見で挫折した方も、もう一度読むと分かる記事があるかもしれません。

第一回から順に読むのを前提に記事を書いてしまったので、途中から読むと分かりにくい部分が多いと思います。後から古い記事を辿れるように、各記事のポイントを列挙します。

第一回 (SWF構造)

  • Adobe 公式 SWF 仕様書の読み方。

  • hexdump コマンドで SWF バイナリを 16進数で表示してデータを解釈。
  • SWF の全体構造。 Header と Tag リストで構成。
  • 値の入るフィールドの長さ自体が可変長の場合もある。> 例えば FrameSize
  • RECORDHEADER の説明。SWFタグの先頭にあって、タグの種類とタグ長を表すフィールド。

第二回 (SWF編集)

pear channel-discover openpear.org
pear install openpear/IO_Bit
pear install openpear/IO_SWF
  • PHP でのバイナリ編集の具体例
  • SWF を改変して Flash の背景色を変更する。
  • SWF 編集の注意点。(タグの長さと全体の長さのフィールドを書き換える)

第三回 (JPEG編)

  • JPEG chunk 構造。メタデータ、符号化テーブル、画像データ。
  • JPEGTables と DefineBits の関係
  • erroneous header (FF D9 FF D8)とは何か
  • DefineBitsJPEG3 での透明度対応

第四回 (Lossless – GIF編)

  • DefineBitsLossless タグのパレット形式(format=3)の解説
  • GIF フォーマットで格納される情報の解説
  • DefineBitsLossless (透明度無し)のフォーマットと GIF とのマッピング (4byte alignment に注意)
  • DefineBitsLossless2 (透明度有り)のフォーマットと 透明GIF とのマッピング

第五回 (Lossless – PNG編)

  • DefineBitsLossless タグのRGB(24bit)/RGBA(32bit)カラー形式(format=5)の解説
  • DefineBitsLossless (透明度無し)のフォーマットと PNG とのマッピング (パレット形式の場合は、4byte alignment に注意)
  • DefineBitsLossless2 (透明度有り)のフォーマットと PNG とのマッピング
  • 透明度を扱う場合は、A(alpha)値による RGB 補正に注意。
  • Zlib 圧縮レベルを変えると最終的な SWF のファイルサイズを減らす事が出来る。

次回予定

次回は DefineShape についてお話しようと思います。
DefineShape の基本構造と、具体的な描画の表現で4回程に分けて記事を作成中です。

それでは失礼いたします。

Author: よや