2014/05/16(金) [n年前の日記]
#3 [cg_tools] HugFlashを使ってswfから画像を取りだしてみた
swfmill で swf から xml に変換すると、中に base64文字列がずらずら並ぶ。おそらくは画像ファイルのデータだと思うのだけど。
それぞれの base64文字列を別ファイルにコピーして、base64 からバイナリに変換してみたのだけど。元々jpegファイルだったデータは、画像ビューワで開けるものの。元々 RGBA のpngだったデータは、ビューワで開くことができなくて。どうも png として扱うために必要な情報が欠落しているらしい。
_Flash SWF Spec - Flash SWF Spec を眺めて、swf内でどういう扱いをされてるデータなのかを予想。jpeg は、 _DefineBitsJPEG2 で記述されてるらしい。RGBAのpngは、 _DefineBitsLossless2 で記述されているのだけど、画像サイズやインデックスカラー等の情報が別に記述されてるようで、それらの情報も反映しないと画像ファイルとしては扱えないのだろうなと。
swfから画像ファイルの形で取り出すことはできないのかなと思ったけれど、 _HugFlash というツールがあったことを思い出した。起動して、swf をD&Dしてみたところ、IDをファイル名にした状態で、画像ファイルを取り出すことができた。
ということは…。HugFlash を使って画像ファイルを取り出した後、swfmill で変換した xml の中から、base64部分をごっそり削って、「この部分は "ID番号.jpg" だよ」みたいな記述で置き換えれば、xml はスッキリした形になりそうな予感。
それぞれの base64文字列を別ファイルにコピーして、base64 からバイナリに変換してみたのだけど。元々jpegファイルだったデータは、画像ビューワで開けるものの。元々 RGBA のpngだったデータは、ビューワで開くことができなくて。どうも png として扱うために必要な情報が欠落しているらしい。
_Flash SWF Spec - Flash SWF Spec を眺めて、swf内でどういう扱いをされてるデータなのかを予想。jpeg は、 _DefineBitsJPEG2 で記述されてるらしい。RGBAのpngは、 _DefineBitsLossless2 で記述されているのだけど、画像サイズやインデックスカラー等の情報が別に記述されてるようで、それらの情報も反映しないと画像ファイルとしては扱えないのだろうなと。
swfから画像ファイルの形で取り出すことはできないのかなと思ったけれど、 _HugFlash というツールがあったことを思い出した。起動して、swf をD&Dしてみたところ、IDをファイル名にした状態で、画像ファイルを取り出すことができた。
ということは…。HugFlash を使って画像ファイルを取り出した後、swfmill で変換した xml の中から、base64部分をごっそり削って、「この部分は "ID番号.jpg" だよ」みたいな記述で置き換えれば、xml はスッキリした形になりそうな予感。
[ ツッコむ ]
以上です。