Top > Flash > SWF > format > Jpeg
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]])

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