はじめに
- Flash SWF バイナリ内の(非可逆圧縮)画像は JPEG 形式で格納される。
- JPEG を格納するフォーマットは4種類あり、以下のタグで区別する
- DefineBitsJPEG(6), DefineBitsJPEG2(21), DefineBitsJPEG3(35), DefineBitsJPEG4(90)
タグ別JPEG構造
- DefineBitsJPEG は以下の2択
- JPEG 形式がそのまま入る
- JPEG のうち圧縮テーブル情報のセグメント(DQT,DHT)を、別タグ(JPEGTables)のブロックに分離する。
- 尚、JPEGTables は SWF ファイル内に1つしか置けないので、圧縮テーブル情報のセグメントを抜いた DefineBitsJPEG(2,3 も同様)は全て一つの JPEGTables を(共通で)参照する事になる。
- DefineBitsJPEG2,3 は以下の二択。参考
- JPEG のうち圧縮テーブルのセグメントを、別タグ(JPEGTables)のブロックに入れて、それを参照する。(DefineBitsJPEG と同じ)
- DefineBitsJPEG2,3 タグ内の、前半に圧縮テーブル情報を持ってきて、後半にそれ以外のセグメントを置き、各々 SOI EOI で囲む。
- この後者の方法を取った場合、SOI, EOI マーカーが2つずつ含まれる、妙な JPEG に見え
る。(前者の場合の SOI, EOI の扱いは未調査)
- DefineBitsJPEG4 の JPEG 構造は不明。恐らくは DefineBitsJPEG2,3 と同様と思われる。
付加的なデータ
- DefineBitsJPEG3 は更に、alpha channel(透明度)データが後ろに付く。
- 透明度のデータを zlib 圧縮して埋めこまれる。
- マスクデータを指定してスプライト表示のように使う事が多い。(参考)
- DefineBitsJPEG4 は更に、スムージングフィルタ用の設定値が 2byte で付加される
- デブロッキングフィルタに渡すパラメータを 2byte で埋め込む
- それ以外は DefineBitsJPEG3 と同じと思われる
その他
- 特殊に見える JPEG の説明はこちら。↓ (本家のサイトはアクセスできなくなっているので、cache 参考の事)
調べ始めたきっかけ
参考
関連
|