swfed 0.29 replaceShapeData リリース
以前より要望のあった、getShapeData, replaceShapeData を実装して 0.29 でリリースしました。
さりげなく getTagContentsByCID, replaceTagContentsByCID も実装してます。
これを活用すると、replaceJPEG,GIF,PNG 系の処理をかなり軽く出来ます。
ShapeData API
以下のような Flash ファイルがあるとします。(貰いものなんですが)
A の Shape の上に B の Shape が乗っかっています。
お好きなツールでダンプします。
ツールをお持ちで無い時は、以下の URL に SWF ファイルを投げ込んで下さい。
例えば、swftools についてくる swfdump は以下のように表示します。
awm.jp:~/swfed-0.29% swfdump a+b.swf [HEADER] File version: 4 [HEADER] File size: 511 [HEADER] Frame rate: 12.000000 [HEADER] Frame count: 1 [HEADER] Movie width: 240.00 [HEADER] Movie height: 240.00 [009] 3 SETBACKGROUNDCOLOR (ff/ff/ff) [002] 220 DEFINESHAPE defines id 0001 [027] 4 DEFINESPRITE defines id 0002 [01a] 6 PLACEOBJECT2 places id 0001 at depth 0001nbits =0, line=866 [001] 0 SHOWFRAME 1 (00:00:00,000) [000] 0 END [01a] 9 PLACEOBJECT2 places id 0002 at depth 0001nbits =10, line=866 [002] 206 DEFINESHAPE defines id 0003 [01a] 9 PLACEOBJECT2 places id 0003 at depth 0003nbits =11, line=866 [001] 0 SHOWFRAME 1 (00:00:00,000) [000] 0 END
DEFINESHAPE(ベクター情報のタグ) は id 0001 id 0003 の2つある事が分かります。
試しに id 0001 の Shape を取り出して id 0003 の Shape に上書きしてみます。
awm.jp:~/swfed-0.29% php ./sample/swfgetshapedata.php a+b.swf 1 > 1.shape awm.jp:~/swfed-0.29% php ./sample/swfreplaceshapedata.php a+b.swf 3 1.shape > 3.swf
B が A に入れ替わりました。\(^o^)/
制限事項
- シェイプ中にビットマップ画像を混ぜたケースには対応してません
- サイズが変わった場合に、どうずれるのか分かりません。