TITLE:Flash SWF format - Jpeg - 元々は JPEG データ(非可逆圧縮)を格納するタグ -- 妙なJPEGchunk構造を調査した結果はこちら → [[Flash/JPEG]] -- ここより詳しい解説 > http://labs.gree.jp/blog/2010/09/782/ - 転じて、JPEG, PNG, GIF を生のまま保存するタグ #contents * (6) DefineBitsJPEG (公式には DefineBits)[#tag6] - JPEG データが image_data にそのまま入る - JPEG データから圧縮用テーブルだけ抜かれたデータが入る事もある -- その場合、圧縮用テーブルは JPEGTables タグを参照する。 +-------------------------------------------------------------+ | tag & length | length | image_id | image_data | | 6 , 0x3f | | | | +-------------------------------------------------------------+ <-- 2 bytes --> <- 4 bytes -> <-2 bytes-> <-contents 残り全部-> <------------------ length ----> * (8) JPEGTables [#tag8] - JPEG データの圧縮用テーブルだけ入る (SWF 中に1つのみ) -- 圧縮用テーブルが入っていない DefineBitsJPEG から参照される。 +---------------------------------------------------+ | tag & length | length | encoding_tables | | 8 0x3f | | | +---------------------------------------------------+ <-- 2 bytes --> <- 4 bytes -> <------ length ------> * (21) DefineBitsJPEG2 [#tag21] - JPEG データの圧縮テーブルに関するセグメントが encoding_tables (又は、別の tag である JPEGTables の方)に、それ以外のセグメントが image_data に入る。 -- そのまま取り出しても JPEG ファイルにはならず、セグメントを並び替える必要がある。 -- 各々、SOI(Start of Image)、EOI(End of Image) マーカーでくくるので、SOI,EOI が2つある妙な JPEG に見える。 --- 参考1 -> http://diary.awm.jp/~yoya/?20080203#200802031 --- 参考2 -> http://diary.awm.jp/~yoya/?20080203#200802033 --- 参考3 -> http://mp.i-revo.jp/user.php/wrckyapk/entry/7225.html -- JPEG データのセグメント構造については ([[Flash/JPEG]])参考のこと。 +-----------------------------------------+------------------------------+ | tag & length | length | image_id | encoding_tables | image_data | | 21 , 0x3f | | | | +------------------------------------------------------------------------+ <-- 2 bytes --> <- 4 bytes -> <-2 bytes-> <--- contents 残り全部 ---> <---------------- length ----------------> * (35) DefineBitsJPEG3 [#tag35] - [[DefineBitsJPEG2>#tag21]] のデータに alpha channel (透明度)データが加わったもの -- これに画像のマスク値を乗せればスプライト的な表示が可能。 -- alpha channel は zlib 圧縮して格納。伸張すると画像左上の pixel から対応する順に透明度の値(1byte)が並んでいる。 -- 参考 -> http://diary.awm.jp/~yoya/?20080213#200802132 +--------------------------------------------------------------- | tag & length | length | image_id | offset_to_alpha | .. | 35 , 0x3f | | | | +--------------------------------------------------------------- <-- 2 bytes --> <- 4 bytes -> <-2 bytes-> <-- 4 bytes --> <--- length (最後まで) --- ---+------------------------------+-------------------+ .. | encoding_tables | image_data | alpha(zlib圧縮) | ---+------------------------------+-------------------+ <-- offse_to_alpha --> <-contents 残り全部-> * (90) DefineBitsJPEG4 [#tag90] - [[DefineBitsJPEG3>#tag35]] のデータに deblock_param (デブロッキングフィルタの値)データが加わったもの -- deblock_param は 2 byte +--------------------------------------------------------------- | tag & length | length | image_id | offset_to_alpha | .. | 90 , 0x3f | | | | +--------------------------------------------------------------- <-- 2 bytes --> <- 4 bytes -> <-2 bytes-> <-- 4 bytes --> <--- length (最後まで) --- ---+-------------+-----------------+------------+-------------------+ .. |deblock_param| encoding_tables | image_data | alpha(zlib圧縮) | ---+-------------+-----------------+------------+-------------------+ <- 2 bytes -> <-contents 残り全部-> <------------ offset_to_alpha -------------> * 参考 [#ref] - http://www.m2osw.com/en/swf_alexref.html#tag_definebitsjpeg - http://www.m2osw.com/en/swf_alexref.html#tag_jpegtables * 関連 [#rel] - Flash SWF 上の JPEG の扱い ([[Flash/JPEG]]) |