• Flash SWF バイナリ内の画像は JPEG 形式で格納される。フォーマットは3種類(タグで区別可能)。
  • DefineBitsJPEG は、JPEG 形式がそのまま入る。
  • DefineBitsJPEG2 は、JPEG 形式のうち圧縮テーブルのセグメントを特別扱いする。以下の二択。参考
    • 圧縮テーブルを別タグ(JPEGTables)のブロックに入れて、複数の DefineBitsJPEG2,3 で使いまわす。
    • DefineBitsJPEG2,3 タグ内ではあるが、前半に圧縮テーブルを持ってきて、後半にそれ以外のセグメントを置く。
      • なので、そのまま取り出すと SOI, EOI マーカーが2つずつある、妙な JPEG に見える。
  • DefineBitsJPEG3 は、JPEG の扱いはDefineBitsJPEG2 と同じで、更に alpha channel(透明度)データが後ろに付く。
    • マスクデータを指定してスプライト表示のように使う事が多い。(参考)

調べる事になったきっかけ

  • http://pc11.2ch.net/test/read.cgi/swf/1172599208/277-376 [#tdef6cc3]
    375 :Now_loading...774KB:2007/06/15(金) 02:45:13 ID:t9sozzWd
    >>345 >>374 
    JPEGを差し替えるだけならこんな感じ。 
    1)とりあえずベースとなるswfを作る。 
    2)DefineBitsJPEG2を探してJPEGデータを差し替える。 
    3)差し替えたDefineBitsJPEG2のRECORDHEADER内のLengthを書き換える。 
    4)SWF File HeaderのFileLengthを書き換える。 
    
    用語やフォーマットは flash_fileformat_specification.pdf を参照。

関連


Reload   Diff   Front page List of pages Search Recent changes Backup Referer   Help   RSS of recent changes