• The added line is THIS COLOR.
  • The deleted line is THIS COLOR.
TITLE:Flash SWF 上の JPEG の扱い 

* はじめに [#uccd699a]

- Flash SWF バイナリ内の(非可逆圧縮)画像は JPEG 形式で格納される。
-- SWF フォーマットの詳細はこちら > [[Flash/SWF/format]]

- JPEG を格納するフォーマットは4種類あり、以下のタグで区別する
--  DefineBitsJPEG(6), DefineBitsJPEG2(21), DefineBitsJPEG3(35), DefineBitsJPEG4(90)

* タグ別JPEG構造 [#ae8da8f1]

- DefineBitsJPEG は以下の2択
-- JPEG 形式がそのまま入る
-- JPEG のうち圧縮テーブル情報のセグメント(DQT,DHT)を、別タグ(JPEGTables)のブロックに分離する。
--- 尚、JPEGTables は SWF ファイル内に1つしか置けないので、圧縮テーブル情報のセグメントを抜いた DefineBitsJPEG(2,3 も同様)は全て一つの JPEGTables を(共通で)参照する事になる。
- DefineBitsJPEG2,3 は以下の二択。[http://diary.awm.jp/~yoya/?2008020&to=20080203#200802031 参考]
-- JPEG のうち圧縮テーブルのセグメントを、別タグ(JPEGTables)のブロックに入れて、それを参照する。(DefineBitsJPEG と同じ)
--   DefineBitsJPEG2,3 タグ内の、前半に圧縮テーブル情報を持ってきて、後半にそれ以外のセグメントを置き、各々 SOI EOI で囲む。
--- この後者の方法を取った場合、SOI, EOI マーカーが2つずつ含まれる、妙な JPEG に見え
る。(前者の場合の SOI, EOI の扱いは未調査)
- DefineBitsJPEG4 の JPEG 構造は不明。恐らくは DefineBitsJPEG2,3 と同様と思われる。

* 付加的なデータ [#l60ed7bf]

- DefineBitsJPEG3 は更に、alpha channel(透明度)データが後ろに付く。
-- 透明度のデータを zlib 圧縮して埋めこまれる。
-- マスクデータを指定してスプライト表示のように使う事が多い。([http://diary.awm.jp/~yoya/?20080213#200802132 参考])
- DefineBitsJPEG4 は更に、スムージングフィルタ用の設定値が 2byte で付加される
-- デブロッキングフィルタに渡すパラメータを 2byte で埋め込む
-- それ以外は DefineBitsJPEG3 と同じと思われる

** その他 [#a7f4b721]

- 特殊に見える JPEG の説明はこちら。↓ (本家のサイトはアクセスできなくなっているので、cache 参考の事)
-- ming について
--- http://auicon.freeownhost.com/pc/dev/ming/jpeg.html ([http://www.awm.jp/~yoya/cache/auicon.freeownhost.com/pc/dev/ming/jpeg.html cache])
---   [http://www.awm.jp/~yoya/cache/auicon.freeownhost.com/pc/dev/ming/jpeg.c.diff jpeg.c.diff の cache]

* 調べ始めたきっかけ [#l84881e4]

- 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 を参照。

* 参考 [#ref]
- http://www.m2osw.com/en/swf_alexref.html#tag_definebitsjpeg

* 関連 [#rel]

- JPEG フォーマット ([[JPEG]])
- SWF Editor PHP extension ([[swfed]])
- [[SWF フォーマット>Flash/SWF/format]]


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