These pages are written by only Japanese.
|
Namazu for hns による簡易全文検索です。 詳細は 詳細指定/ヘルプをご参照下さい。 |
||||||||||||||||||||||||||||||||||||||||||||||||||
$obj = new SWFEditor(); $obj->input($swfdata); echo $obj->getPNGData($image_id);
% php swfdump.phps game.swf # format 5 の画像を探す <略> [91] tag=DefineBitsLossless2(36) length=58282 image_id=72 format=5 width=155 height=156 argb bitmap exists <略> % php swfgetpngdata.phps game.swf 72 > test.png透明度付きで吸い出せてます。(^o^)/
color_palette=(png_colorp)NewPtr(sizeof(png_color)*num_palette); ctable=(*savePix)->pmTable; HLock((Handle)ctable); for (i=0; i<num_palette; i++) { color_palette[i].red=((*ctable)->ctTable[i].rgb.red)>>8; color_palette[i].green=((*ctable)->ctTable[i].rgb.green)>>8; color_palette[i].blue=((*ctable)->ctTable[i].rgb.blue)>>8; } png_set_PLTE(write_ptr,write_info_ptr,color_palette,num_palette);なるほど… パレットはこうして設定しつつ、 データ本体は
image_rows = malloc( image_height * sizeof( BYTE *) ); for( i = 0; i < image_height; i++ ) { dest = image_rows[ i ] = malloc( bmp_line_byts ); src = &bmp_data[ (image_height - 1 - i) * bmp_line_byts ]; for( j = 0; j < bmp_line_byts; j++ ) { *dest++ = *src++; } } png_write_image( png_ptr, image_rows);1 pixel 1 byte の生データを放り込むと。
% php swfdump.phps game.swf # format=3 の画像を探す <略> [44] tag=DefineBitsLossless2(36) length=134 image_id=34 format=3 width=62 height=18 colormap_count=16 rgba colormap exists indices exists <略> % php swfgetpngdata.phps game.swf 34 > test2.pngパレット対応成功。(^o^)/
php-4.0.0% ./php <?php var_dump(microtime()); X-Powered-By: PHP/4.0.0 Content-type: text/html string(21) "0.28143600 1218182721"これが知りたかっただけです。^^;