swfed Lossless 画像入れ替え
何となくできました。
ただし、8bit RGBでαチャネル無しのみ対応です。
実行結果
まず入れ替えたい画像を探します。
% php swfdump.phps 5791.swf <略> [12397] tag=DefineBitsLossless2(36) length=9938 image_id=1136 format=5 width=160 height=160 argb bitmap exists
image_id 1136 の画像を見つけたので、それを入れ替えてみます。
% php swfreplacepngdata.phps 5791.swf 1136 cyan_3x3.PNG > tmp.swf
さて、dump して確認。
% php swfdump.phps 5791.swf <略> [12397] tag=DefineBitsLossless(20) length=22 image_id=1136 format=5 width=3 height=3 xrgb bitmap exists
入れ替わりました… ( ̄― ̄)
後でαチャネル処理も実装しようっと。
プログラム
- http://diary.awm.jp/~yoya/data/2008/07/18/swfed/
- http://diary.awm.jp/~yoya/data/2008/07/18/swfed/swf_png.c
- http://diary.awm.jp/~yoya/data/2008/07/18/swfed/swf_tag_lossless.c
- http://diary.awm.jp/~yoya/data/2008/07/18/swfed/swfreplacepngdata.phps
まだ、メモリリークチェックしてないので、怪しいです。
メモリチェック
少なくとも正常系では free 忘れはないようです。
さすが自分。(*'ω'*)