SWFEditorJS Lossless画像dump

↓これの続き

Lossless 画像ですが、たまに失敗するけれど、そこそこ dump 表示できるようになりました。

SWF DefineLossless, DefineLossless2 の zlib データを解いて、PNG 形式に合うように byte を並び替えて base64 した上で img src に渡してます。

以下のページで実験できます。

成功例

透明/非透明,パレット/ビットマップ形式の組み合わせテストです。

BitmapFormat=4 (15bit color) も実装しましたが、動作は確認していません。(テスト素材が手元に無かったので)

失敗例

Baby Princess の swf を渡した例で、画像が半分で切れてます。
他の画像では上の方を少ししか表示しなかったり、後ろの方が少しだけ切れてたりで、途中で切れる事以外に法則が見えません。


メモ

  • PNG のフォーマットすっかり忘れてました。 len + name + data + crc32 のブロックなんですね。
  • crc32 は以下のページの function が素直に動きました
  • Lossless は btoa でダメだったので iz 先生の base64encode を利用しています。
    • でも、JPEG は今の所 btoa で問題ないです。swf file 全体 download でも btoa を使っていますが、こちらも問題なし。偶然なんだろうか。。
  • Windowsexplorer の画像プレビューは CRC が間違えてても表示してくれました。デバッグには有難い。