{"id":1902,"date":"2010-12-14T17:17:07","date_gmt":"2010-12-14T08:17:07","guid":{"rendered":"http:\/\/labs.gree.jp\/blog\/?p=1902"},"modified":"2021-04-27T15:08:04","modified_gmt":"2021-04-27T06:08:04","slug":"post1902","status":"publish","type":"post","link":"https:\/\/labs.gree.jp\/blog\/2010\/12\/1902\/","title":{"rendered":"SWF\u30d0\u30a4\u30ca\u30ea\u7de8\u96c6\u306e\u30b9\u30b9\u30e1\u7b2c\u4e94\u56de (PNG)"},"content":{"rendered":"<p>\u3053\u3093\u306b\u3061\u306f\u3002\u30e1\u30c7\u30a3\u30a2\u958b\u767a\u306e\u3088\u3084\u3067\u3059\u3002<\/p>\n<p>\u4eca\u56de\u306f\u3001PNG \u753b\u50cf\u5165\u308c\u66ff\u3048\u306b\u3064\u3044\u3066\u304a\u8a71\u3057\u307e\u3059\u3002<\/p>\n<h3 id=\"hs_92360b1c1a70ca4d5fddb91b4e1990e4_header_0\"> PNG \u306e\u60c5\u5831\u3092\u683c\u7d0d\u3067\u304d\u308b\u30bf\u30b0<\/h3>\n<ul>\n<li> DefineBitsLossless, DefineBitsLossless2 \u304c\u5229\u7528\u51fa\u6765\u307e\u3059\u3002(<a href=\"#hs_92360b1c1a70ca4d5fddb91b4e1990e4_footnote_1\" id=\"hs_92360b1c1a70ca4d5fddb91b4e1990e4_footnotelink_1\" title=\"SWF 8 \u4ee5\u964d\u3067\u306f DefineBitsJPEG \u7cfb\u306e\u30bf\u30b0\u306b PNG \u30c7\u30fc\u30bf\u3092\u683c\u7d0d\u3067\u304d\u308b\u3088\u3046\u3067\u3059\u304c\u3001\u305d\u308c\u306b\u306f\u89e6\u308c\u307e\u305b\u3093\">*1<\/a>)<\/li>\n<li> DefineBitsLossless \u306b\u900f\u660e\u5ea6\u60c5\u5831\u3092\u52a0\u3048\u305f\u306e\u304c\u3001DefineBitsLossless2 \u3067\u3059\u3002<\/li>\n<\/ul>\n<h3 id=\"hs_92360b1c1a70ca4d5fddb91b4e1990e4_header_1\"> PNG \u306e\u7279\u5fb4 (\u57fa\u790e\u77e5\u8b58)<\/h3>\n<ul>\n<li> \u53ef\u9006\u5727\u7e2e\u306e\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u3067\u3059\u3002(JPEG\u3068\u9055\u3063\u3066\u753b\u50cf\u306e\u7d30\u90e8\u304c\u6f70\u308c\u307e\u305b\u3093)<\/li>\n<li> \u30d1\u30ec\u30c3\u30c8\u5f62\u5f0f\u3068\u30c8\u30a5\u30eb\u30fc\u30ab\u30e9\u30fc\u5f62\u5f0f(24bit(<a href=\"#hs_92360b1c1a70ca4d5fddb91b4e1990e4_footnote_2\" id=\"hs_92360b1c1a70ca4d5fddb91b4e1990e4_footnotelink_2\" title=\"PNG \u306f R,G,B \u5404\u3005\u3092 16bit \u3067\u8868\u73fe\u3059\u308b 48bit \u30d5\u30eb\u30ab\u30e9\u30fc\u3082\u8868\u73fe\u51fa\u6765\u307e\u3059\u304c\u3001\u305d\u306e\u8aac\u660e\u306f\u7701\u304d\u307e\u3059\">*2<\/a>)\u30d5\u30eb\u30ab\u30e9\u30fc)\u306e\u4e21\u65b9\u306b\u5bfe\u5fdc\u3057\u307e\u3059\u3002<\/li>\n<li> \u8272\u6bce\u3001\u30d4\u30af\u30bb\u30eb\u6bce\u306b\u900f\u660e\u5ea6(\u534a\u900f\u660e\u3082\u53ef)\u304c\u6307\u5b9a\u3067\u304d\u307e\u3059\u3002 (GIF\u306f\u534a\u900f\u660e\u3092\u6271\u3048\u307e\u305b\u3093)<\/li>\n<\/ul>\n<h4 id=\"hs_92360b1c1a70ca4d5fddb91b4e1990e4_header_2\"> \u30d1\u30ec\u30c3\u30c8\u5f62\u5f0f<\/h4>\n<ul>\n<li> \u524d\u56de\u306e GIF \u7de8\u306e\u8aac\u660e\u3068\u4f3c\u3066\u3044\u307e\u3059\u304c\u3001(GIF\u3068\u7570\u306a\u308a)\u534a\u900f\u660e\u3082\u6271\u3046\u70ba\u3001\u683c\u7d0d\u65b9\u5f0f\u304c\u7570\u306a\u308a\u307e\u3059\u3002<\/li>\n<li> \u4ee5\u4e0b\u306e\u306f\u8f2a\u90ed\u306e\u5916\u304c\u900f\u660e\u3067\u3001\u9ec4\u8272\u3092\u5c11\u3057\u3060\u3051\u534a\u900f\u660e\u3057\u305f\u4f8b\u3067\u3059\u3002<\/li>\n<\/ul>\n<p><a href=\"http:\/\/labs.gree.jp\/blog\/2010\/12\/1902\/png_palette\/\" rel=\"attachment wp-att-2046\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/labs.gree.jp\/blog\/wp-content\/uploads\/2010\/12\/PNG_PALETTE.png\" alt=\"\" title=\"PNG_PALETTE\" width=\"466\" height=\"348\" class=\"alignnone size-full wp-image-2046\" srcset=\"https:\/\/labs.gree.jp\/blog\/wp-content\/uploads\/2010\/12\/PNG_PALETTE.png 466w, https:\/\/labs.gree.jp\/blog\/wp-content\/uploads\/2010\/12\/PNG_PALETTE-267x200.png 267w\" sizes=\"auto, (max-width: 466px) 100vw, 466px\" \/><\/a><\/p>\n<ul>\n<li> PLTE chunk \u306b\u30ab\u30e9\u30fc\u30d1\u30ec\u30c3\u30c8(=\u30ab\u30e9\u30fc\u30c6\u30fc\u30d6\u30eb)\u304c\u5165\u308a\u3001IDAT chunk \u306b\u5404\u30d4\u30af\u30bb\u30eb\u306e\u8272\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u4e00\u89a7\u304c\u683c\u7d0d\u3055\u308c\u308b\u306e\u306f GIF \u3068\u5b9f\u8cea\u7684\u306b\u5909\u308f\u308a\u307e\u305b\u3093\u304c\u3001\u900f\u660e\u5ea6\u60c5\u5831\u3092 tRNS chunk \u306b\u914d\u5217\u3067\u683c\u7d0d\u3057\u307e\u3059\u3002<\/li>\n<li> PLTE (\u30ab\u30e9\u30fc\u30d1\u30ec\u30c3\u30c8)\u306e\u5148\u982d\u304b\u3089\u9806\u306b\u5bfe\u5fdc\u3059\u308b\u4e0d\u900f\u660e\u5ea6(<a href=\"#hs_92360b1c1a70ca4d5fddb91b4e1990e4_footnote_3\" id=\"hs_92360b1c1a70ca4d5fddb91b4e1990e4_footnotelink_3\" title=\"alpha\u5024\u3084 opaque \u7b49\u3068\u547c\u3070\u308c\u308b\u4e8b\u304c\u591a\u3044\u3067\u3059\">*3<\/a>)\u3092 tRNS \u306b\u683c\u7d0d\u3057\u307e\u3059\u3002\u900f\u660e\u53c8\u306f\u534a\u900f\u660e\u306a\u5206\u3060\u3051\u3067\u826f\u304f\u3066\u7701\u7565\u3057\u305f\u5206\u306f\u4e0d\u900f\u660e(0xff)\u3068\u3057\u3066\u6271\u308f\u308c\u307e\u3059\u3002<\/li>\n<\/ul>\n<h4 id=\"hs_92360b1c1a70ca4d5fddb91b4e1990e4_header_3\"> \u30c8\u30a5\u30eb\u30fc\u30ab\u30e9\u30fc\u5f62\u5f0f<\/h4>\n<ul>\n<li> pixel \u6bce\u306b RGB \u306e 24bit \u3084 RGBA \u306e 32bit \u3092\u4e26\u3079\u308b\u683c\u7d0d\u65b9\u6cd5\u3067\u3059\u3002<\/li>\n<li> RGBA \u3092\u4f8b\u306b\u3068\u308b\u3068\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002<\/li>\n<\/ul>\n<p><a href=\"http:\/\/labs.gree.jp\/blog\/2010\/12\/1902\/png_rgba\/\" rel=\"attachment wp-att-2074\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/labs.gree.jp\/blog\/wp-content\/uploads\/2010\/12\/PNG_RGBA.png\" alt=\"\" title=\"PNG_RGBA\" width=\"320\" height=\"357\" class=\"alignnone size-full wp-image-2074\" srcset=\"https:\/\/labs.gree.jp\/blog\/wp-content\/uploads\/2010\/12\/PNG_RGBA.png 320w, https:\/\/labs.gree.jp\/blog\/wp-content\/uploads\/2010\/12\/PNG_RGBA-179x200.png 179w\" sizes=\"auto, (max-width: 320px) 100vw, 320px\" \/><\/a><\/p>\n<ul>\n<li> \u3053\u3061\u3089\u306f pixel\u6bce\u306b\u900f\u660e\u5ea6\u3092\u6307\u5b9a\u3067\u304d\u307e\u3059\u3002\u52ff\u8ad6\u3001\u534a\u900f\u660e\u3082\u8868\u73fe\u3067\u304d\u307e\u3059\u3002<\/li>\n<\/ul>\n<h3 id=\"hs_92360b1c1a70ca4d5fddb91b4e1990e4_header_4\"> DefineBitsLossless \u30bf\u30b0<\/h3>\n<p>\u4ee5\u4e0b\u306b\u3001DefineBitsLossless, DefineBitsLossless2 \u306e\u30bf\u30b0\u3092\u7a2e\u985e\u6bce\u306b\u56f3\u3067\u793a\u3057\u307e\u3059\u3002DefineBitsLossless \u306e\u65b9\u306b\u306f format=4 (15bit RGB \u5f62\u5f0f)\u3082\u5b58\u5728\u3057\u3066\u3001RGB \u5404\u3005\u3092 4 bit \u3067\u8868\u3059 12bit \u30ab\u30e9\u30fc\u3092\u683c\u7d0d\u3059\u308b\u306e\u306b\u4fbf\u5229\u3067\u3059\u304c\u3001\u8aac\u660e\u3092\u7701\u7565\u3057\u307e\u3059\u3002<\/p>\n<h4 id=\"hs_92360b1c1a70ca4d5fddb91b4e1990e4_header_5\"> DefineBitsLossless (\u900f\u660e\u8272\u306a\u3057)<\/h4>\n<h5 id=\"hs_92360b1c1a70ca4d5fddb91b4e1990e4_header_6\"> format=3 (\u30ab\u30e9\u30fc\u30de\u30c3\u30d7\u5f62\u5f0f= \u30d1\u30ec\u30c3\u30c8\u5f62\u5f0f)<\/h5>\n<ul>\n<li> \u3053\u306e\u30d1\u30bf\u30fc\u30f3\u3067\u306f 4 \u306e\u500d\u6570\u3067\u306e padding \u51e6\u7406\u304c\u5fc5\u8981\u3067\u3059\u3002(format=5 \u3084 DefineBitsLossless2 \u3067\u306f padding \u306f\u4e0d\u8981)<\/li>\n<li> GIF \u3068\u307b\u307c\u540c\u3058\u3067\u3059\u306e\u3067\u8a73\u7d30\u306f\u524d\u56de\u306e\u8a18\u4e8b\u3092\u53c2\u8003\u306b\u3057\u3066\u4e0b\u3055\u3044\u3002 > <a href=\"http:\/\/labs.gree.jp\/blog\/2010\/10\/1263\/\">http:\/\/labs.gree.jp\/blog\/2010\/10\/1263\/<\/a><\/li>\n<\/ul>\n<p><a href=\"http:\/\/labs.gree.jp\/blog\/2010\/12\/1902\/definebitslossless-format-3-png\/\" rel=\"attachment wp-att-2062\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/labs.gree.jp\/blog\/wp-content\/uploads\/2010\/12\/DefineBitsLossless-format-3-PNG-.png\" alt=\"\" title=\"DefineBitsLossless-format-3-PNG-\" width=\"524\" height=\"449\" class=\"alignnone size-full wp-image-2062\" srcset=\"https:\/\/labs.gree.jp\/blog\/wp-content\/uploads\/2010\/12\/DefineBitsLossless-format-3-PNG-.png 524w, https:\/\/labs.gree.jp\/blog\/wp-content\/uploads\/2010\/12\/DefineBitsLossless-format-3-PNG--233x200.png 233w, https:\/\/labs.gree.jp\/blog\/wp-content\/uploads\/2010\/12\/DefineBitsLossless-format-3-PNG--466x400.png 466w\" sizes=\"auto, (max-width: 524px) 100vw, 524px\" \/><\/a><\/p>\n<h5 id=\"hs_92360b1c1a70ca4d5fddb91b4e1990e4_header_7\"> format=5 (24bit RGB\u5f62\u5f0f)<\/h5>\n<ul>\n<li> \u30ab\u30e9\u30fc\u30de\u30c3\u30d7\u7121\u3057\u3067\u753b\u50cf\u4e0a\u306e\u5404 pixel \u306e RGB \u3092\u305d\u306e\u307e\u307e\u4e26\u3079\u3066\u683c\u7d0d\u3057\u307e\u3059\u3002<\/li>\n<li> RGB \u306e\u982d\u306b 00(=X) \u3092\u4ed8\u3051\u3066\u3001XRGB \u3067\u4e26\u3079\u307e\u3059\u3002<\/li>\n<\/ul>\n<p><a href=\"http:\/\/labs.gree.jp\/blog\/2010\/12\/1902\/definebitslossless-format-5-png\/\" rel=\"attachment wp-att-2237\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/labs.gree.jp\/blog\/wp-content\/uploads\/2010\/12\/DefineBitsLossless-format-5-PNG.png\" alt=\"\" title=\"DefineBitsLossless-format-5-PNG\" width=\"500\" height=\"449\" class=\"alignnone size-full wp-image-2237\" srcset=\"https:\/\/labs.gree.jp\/blog\/wp-content\/uploads\/2010\/12\/DefineBitsLossless-format-5-PNG.png 500w, https:\/\/labs.gree.jp\/blog\/wp-content\/uploads\/2010\/12\/DefineBitsLossless-format-5-PNG-222x200.png 222w, https:\/\/labs.gree.jp\/blog\/wp-content\/uploads\/2010\/12\/DefineBitsLossless-format-5-PNG-445x400.png 445w\" sizes=\"auto, (max-width: 500px) 100vw, 500px\" \/><\/a><\/p>\n<h4 id=\"hs_92360b1c1a70ca4d5fddb91b4e1990e4_header_8\"> DefineBitsLossless2 (\u900f\u660e\u8272\u60c5\u5831\u3064\u304d)<\/h4>\n<ul>\n<li> DefineBitsLossless \u3068\u307b\u307c\u540c\u3058\u3067\u3001\u8272\u306e\u4e26\u3073\u306b\u3064\u3044\u3066\u3001\u30ab\u30e9\u30fc\u30de\u30c3\u30d7\u306e RGB \u304c RGBA \u306b\u3001(24Bit) RGB \u306e XRGB \u304c ARGB \u306b\u5909\u308f\u308a\u307e\u3059\u3002<\/li>\n<\/ul>\n<h5 id=\"hs_92360b1c1a70ca4d5fddb91b4e1990e4_header_9\"> format=3 (\u30ab\u30e9\u30fc\u30de\u30c3\u30d7\u5f62\u5f0f= \u30d1\u30ec\u30c3\u30c8\u5f62\u5f0f)<\/h5>\n<ul>\n<li> \u30ab\u30e9\u30fc\u30de\u30c3\u30d7\u306b\u900f\u660e\u5ea6\u60c5\u5831\u3082\u4ed8\u52a0\u3057\u307e\u3059\u3002<\/li>\n<\/ul>\n<p><a href=\"http:\/\/labs.gree.jp\/blog\/2010\/12\/1902\/definebitslossless2-format-3-png\/\" rel=\"attachment wp-att-2064\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/labs.gree.jp\/blog\/wp-content\/uploads\/2010\/12\/DefineBitsLossless2-format-3-PNG.png\" alt=\"\" title=\"DefineBitsLossless2-format-3-PNG\" width=\"528\" height=\"452\" class=\"alignnone size-full wp-image-2064\" srcset=\"https:\/\/labs.gree.jp\/blog\/wp-content\/uploads\/2010\/12\/DefineBitsLossless2-format-3-PNG.png 528w, https:\/\/labs.gree.jp\/blog\/wp-content\/uploads\/2010\/12\/DefineBitsLossless2-format-3-PNG-233x200.png 233w, https:\/\/labs.gree.jp\/blog\/wp-content\/uploads\/2010\/12\/DefineBitsLossless2-format-3-PNG-467x400.png 467w\" sizes=\"auto, (max-width: 528px) 100vw, 528px\" \/><\/a><\/p>\n<ul>\n<li> \u30ab\u30e9\u30fc\u30de\u30c3\u30d7\u4e0a\u306e\u4e26\u3073\u306f RGBA \u3067\u3059\u3002format=5 \u306f ARGB \u306a\u306e\u3067\u3054\u6ce8\u610f\u4e0b\u3055\u3044\u3002<\/li>\n<\/ul>\n<h5 id=\"hs_92360b1c1a70ca4d5fddb91b4e1990e4_header_10\"> format=5 (32bit ARGB\u5f62\u5f0f)<\/h5>\n<ul>\n<li> \u5404pixel \u6bce\u306b\u900f\u660e\u5ea6\u3092\u542b\u3081\u305f ARGB 32bit \u3092\u5358\u7d14\u306b\u4e26\u3079\u308b\u5f62\u5f0f\u3067\u3059\u3002<\/li>\n<\/ul>\n<p><a href=\"http:\/\/labs.gree.jp\/blog\/2010\/12\/1902\/definebitslossless2-format-5-png\/\" rel=\"attachment wp-att-2214\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/labs.gree.jp\/blog\/wp-content\/uploads\/2010\/12\/DefineBitsLossless2-format-5-PNG.png\" alt=\"\" title=\"DefineBitsLossless2-format-5-PNG\" width=\"499\" height=\"452\" class=\"alignnone size-full wp-image-2214\" srcset=\"https:\/\/labs.gree.jp\/blog\/wp-content\/uploads\/2010\/12\/DefineBitsLossless2-format-5-PNG.png 499w, https:\/\/labs.gree.jp\/blog\/wp-content\/uploads\/2010\/12\/DefineBitsLossless2-format-5-PNG-220x200.png 220w, https:\/\/labs.gree.jp\/blog\/wp-content\/uploads\/2010\/12\/DefineBitsLossless2-format-5-PNG-441x400.png 441w\" sizes=\"auto, (max-width: 499px) 100vw, 499px\" \/><\/a><\/p>\n<h3 id=\"hs_92360b1c1a70ca4d5fddb91b4e1990e4_header_11\"> \u6ce8\u610f\u70b9<\/h3>\n<ul>\n<li> RGB(24bit)\u306e\u30ab\u30e9\u30fc\u30de\u30c3\u30d7\u5f62\u5f0f\u3067\u306f\u6a2a\u306e\u30e9\u30a4\u30f3\u6bce\u306b 4byte \u5883\u754c\u306b\u5408\u3046\u3088\u3046\u306b padding \u3092\u5165\u308c\u307e\u3059\u3002\u524d\u56de\u306eGIF\u7de8\u3092\u53c2\u8003\u306b\u3057\u3066\u4e0b\u3055\u3044\u3002<\/li>\n<li> GD \u3067\u62bd\u51fa\u3057\u305f A(alpha\u5024)\u306f 0(\u4e0d\u900f\u660e)=>127(\u900f\u660e)\u3067\u3001SWF \u306e\u65b9\u306f 0(\u900f\u660e)=>255(\u4e0d\u900f\u660e)\u306a\u306e\u3067\u3001\u5909\u63db\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/li>\n<li>  ARGB, RGBA \u8868\u73fe\u306f\u3001A \u306b\u5fdc\u3058\u3066\u4ee5\u4e0b\u306e\u5f0f\u3067 RGB \u3092\u88dc\u6b63\u3057\u307e\u3059\u3002<\/li>\n<\/ul>\n<pre class=\"superpre \">\nR' = R * A \/ 255\nG' = G * A \/ 255\nB' = B * A \/ 255<\/pre>\n<h3 id=\"hs_92360b1c1a70ca4d5fddb91b4e1990e4_header_12\"> PNG \u5dee\u3057\u66ff\u3048\u51e6\u7406<\/h3>\n<ul>\n<li> \u7d20\u6750Flash (grayorz.swf)<\/li>\n<\/ul>\n<ul>\n<li>\n \u5c1a\u3001\u3053\u308c\u304b\u3089\u8aac\u660e\u3059\u308b\u30b3\u30fc\u30c9\u306f\u4ee5\u4e0b\u306e\u30d5\u30a1\u30a4\u30eb\u304b\u3089\u5207\u308a\u51fa\u3057\u305f\u3082\u306e\u3067\u3059\u3002<\/p>\n<ul>\n<li>  <a href=\"http:\/\/svn.openpear.org\/IO_SWF\/branches\/1.0\/sample\/swfreplacepng.php\">http:\/\/svn.openpear.org\/IO_SWF\/branches\/1.0\/sample\/swfreplacepng.php<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<ul>\n<li> SWF \u7de8\u96c6\u306b\u4f7f\u3046 IO_SWF_Editor \u306f openpear \u3067\u516c\u958b\u3057\u3066\u3044\u307e\u3059\u3002pear \u306e\u5165\u3063\u3066\u3044\u308b\u74b0\u5883\u3067\u306f\u3001\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3067\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3067\u304d\u307e\u3059\u3002<\/li>\n<\/ul>\n<pre class=\"superpre \">\npear channel-discover openpear.org\npear install openpear\/IO_Bit\npear install openpear\/IO_SWF<\/pre>\n<h4 id=\"hs_92360b1c1a70ca4d5fddb91b4e1990e4_header_13\"> \u30d1\u30ec\u30c3\u30c8\u5f62\u5f0f\u306e PNG<\/h4>\n<p>GD \u3092\u4f7f\u3046\u3068\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u5438\u3044\u51fa\u305b\u307e\u3059\u3002<\/p>\n<ul>\n<li> \u30d1\u30ec\u30c3\u30c8\u3092\u5438\u3044\u51fa\u3059<\/li>\n<\/ul>\n<pre class=\"superpre php\">\n$im = imagecreatefrompng($pngfile);\n\n$colortable = '';\n$colortable_size = imagecolorstotal($im);\nfor ($i = 0 ; $i < $colortable_size ; $i++) {\n    $rgb = imagecolorsforindex($im, $i);\n    $colortable .= chr($rgb['red']);\n    $colortable .= chr($rgb['green']);\n    $colortable .= chr($rgb['blue']);\n}<\/pre>\n<ul>\n<li> \u30d1\u30ec\u30c3\u30c8\u3092\u6307\u3059\u30d4\u30af\u30bb\u30eb\u30c7\u30fc\u30bf\u3092\u5438\u3044\u51fa\u3059 (\u6a2a\u4e00\u5217\u6bce\u306b 4 \u306e\u500d\u6570\u306b\u306a\u308b\u3088\u3046\u306b)<\/li>\n<\/ul>\n<pre class=\"superpre php\">\n$pixeldata = '';\n$i = 0;\n$width  = imagesx($im);\n$height = imagesy($im);\nfor ($y = 0 ; $y < $height ; $y++) {\n    for ($x = 0 ; $x < $width ; $x++) {\n        $pixeldata .= chr(imagecolorat($im, $x, $y));\n        $i++;\n    }\n    while (($i % 4) != 0) { \/\/ 4 \u306e\u500d\u6570\u306b\u5408\u308f\u305b\u308b\n        $pixeldata .= chr(0);\n        $i++;\n    }\n}<\/pre>\n<ul>\n<li> \u5438\u3044\u51fa\u3057\u305f\u753b\u50cf\u30c7\u30fc\u30bf\u3092 DefineBitsLossless \u306e\u5f62\u5f0f\u306b\u5909\u63db\u3059\u308b<\/li>\n<\/ul>\n<pre class=\"superpre php\">\n$format = 3;\n$content = pack('v', $image_id).chr($format).pack('v', $width).pack('v', $height);\n$content .= chr($colortable_size - 1).gzcompress($colortable.$pixeldata);<\/pre>\n<ul>\n<li> SWF \u5185\u306e\u753b\u50cf\u3092\u5165\u308c\u66ff\u3048\u308b<\/li>\n<\/ul>\n<pre class=\"superpre php\">\n$swf = new IO_SWF_Editor();\n$swf->parse($swfdata);\n$swf->setCharacterId();\n\n$tag_code = array(6, 21, 35, 20, 36); \/\/ Bitmap Tags\n$tag = array('Code' => 20,\n             'Content' => $content);\n$ret = $swf->replaceTagByCharacterId($tag_code, $image_id, $tag);\n\necho $swf->build();<\/pre>\n<ul>\n<li> PNG\u753b\u50cf (GREElabs-palette.png)<\/li>\n<\/ul>\n<p><a href=\"http:\/\/labs.gree.jp\/blog\/2010\/12\/1902\/greelabs-palette\/\" rel=\"attachment wp-att-1994\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/labs.gree.jp\/blog\/wp-content\/uploads\/2010\/11\/GREElabs-palette.png\" alt=\"\" title=\"GREElabs-palette\" width=\"139\" height=\"40\" class=\"alignnone size-full wp-image-1994\" \/><\/a><\/p>\n<ul>\n<li> \u30b3\u30de\u30f3\u30c9\u5b9f\u884c<\/li>\n<\/ul>\n<pre class=\"superpre \">\n% php swfreplacepng.php grayorz.swf 1 GREElabs-palette.png  > GREElabs-palette.swf<\/pre>\n<ul>\n<li> \u7d50\u679c(GREElabs-palette.swf)<\/li>\n<\/ul>\n<h3 id=\"hs_92360b1c1a70ca4d5fddb91b4e1990e4_header_14\"> 32Bit RGBA\u5f62\u5f0f\u306ePNG\u753b\u50cf(\u900f\u660e\u5ea6\u4ed8\u304d)<\/h3>\n<ul>\n<li> 32Bit RGBA \u3092\u5438\u3044\u51fa\u3057\u3066 ARGB \u3067\u4e26\u3079\u308b (RGB \u306f A \u306b\u5fdc\u3058\u3066\u88dc\u6b63)<\/li>\n<li> GD library \u306e alpha \u5024\u306f\u7279\u6b8a\u306a\u306e\u3067 127\uff5e0 \u3092 0\uff5e254 \u306b\u5909\u63db\u3002<\/li>\n<\/ul>\n<pre class=\"superpre php\">\n$pixeldata = '';\n$i = 0;\n$width  = imagesx($im);\n$height = imagesy($im);\nfor ($y = 0 ; $y < $height ; $y++) {\n    for ($x = 0 ; $x < $width ; $x++) {\n        $i = imagecolorat($im, $x, $y);\n        $rgba = imagecolorsforindex($im, $i);\n        $alpha = $rgba['alpha'];\n        $alpha = 2 * (127 - $alpha);\n        $pixeldata .= chr($alpha);\n        $pixeldata .= chr($rgba['red']  * $alpha \/ 255);\n        $pixeldata .= chr($rgba['green']* $alpha \/ 255);\n        $pixeldata .= chr($rgba['blue'] * $alpha \/ 255);\n    }\n}<\/pre>\n<ul>\n<li> \u5438\u3044\u51fa\u3057\u305f\u753b\u50cf\u30c7\u30fc\u30bf\u3092 DefineBitsLossless2 \u306e\u5f62\u5f0f\u306b\u5909\u63db\u3059\u308b<\/li>\n<\/ul>\n<pre class=\"superpre php\">\n$format = 5;\n$content = pack('v', $image_id).chr($format).pack('v', $width).pack('v', $height);\n$content .= gzcompress($pixeldata);<\/pre>\n<ul>\n<li> SWF \u5185\u306e\u753b\u50cf\u3092\u5165\u308c\u66ff\u3048\u308b<\/li>\n<\/ul>\n<pre class=\"superpre php\">\n$swf = new IO_SWF_Editor();\n$swf->parse($swfdata);\n$swf->setCharacterId();\n\n$tag_code = array(6, 21, 35, 20, 36); \/\/ Bitmap Tags\n$tag = array('Code' => 36,\n             'Content' => $content);\n$ret = $swf->replaceTagByCharacterId($tag_code, $image_id, $tag);\n\necho $swf->build();<\/pre>\n<ul>\n<li> PNG\u753b\u50cf (GREElabs-rgba.png)<\/li>\n<\/ul>\n<p><a href=\"http:\/\/labs.gree.jp\/blog\/2010\/12\/1902\/greelabs-rgba\/\" rel=\"attachment wp-att-1995\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/labs.gree.jp\/blog\/wp-content\/uploads\/2010\/11\/GREElabs-rgba.png\" alt=\"\" title=\"GREElabs-rgba\" width=\"139\" height=\"40\" class=\"alignnone size-full wp-image-1995\" \/><\/a><\/p>\n<ul>\n<li> \u30b3\u30de\u30f3\u30c9\u5b9f\u884c<\/li>\n<\/ul>\n<pre class=\"superpre \">\n%  php swfreplacepng.php grayorz.swf 1 GREElabs-rgba.png  > GREElabs-rgba.swf<\/pre>\n<ul>\n<li> \u7d50\u679c(GREElabs-rgba.swf)<\/li>\n<\/ul>\n<p>\u7c21\u5358\u3067\u3059\u306d\uff01<\/p>\n<h3 id=\"hs_92360b1c1a70ca4d5fddb91b4e1990e4_header_15\"> \u5099\u8003<\/h3>\n<ul>\n<li> SWF \u4ed5\u69d8\u66f8\u306b\u306f\u3001DefineLossless2 \u306e format = 3\u3000(\u30ab\u30e9\u30fc\u30de\u30c3\u30d7\u5f62\u5f0f) \u306b\u5bfe\u3059\u308b A \u5024\u306b\u3088\u308b RGB \u88dc\u6b63\u304c\u66f8\u304b\u308c\u3066\u3044\u307e\u305b\u3093\u304c\u3001\u5b9f\u969b\u306b\u306f format = 5 \u540c\u69d8\u306b\u88dc\u6b63\u304c\u5fc5\u8981\u306a\u3088\u3046\u3067\u3059\u3002(\u7d4c\u9a13\u8ac7)<\/li>\n<li> ColormapNum \u306f\u8272\u6570\u3092 -1 \u3057\u305f\u5024\u304c\u5165\u3063\u3066\u3044\u308b\u306e\u3067\u6ce8\u610f\u30021byte \u3067 1\u8272\uff5e256\u8272\u3092\u8868\u73fe\u3059\u308b\u70ba\u3060\u3068\u601d\u308f\u308c\u307e\u3059\u3002(\u305d\u306e\u307e\u307e\u3060\u3068 255\u8272\u3067\u6253\u3061\u6b62\u3081\u306a\u306e\u3067)<\/li>\n<li> \u753b\u50cf\u30c7\u30fc\u30bf\u3092\u5727\u7e2e\u3059\u308b\u969b\u306b\u4f7f\u7528\u3059\u308b gzcompress \u306f\u7b2c\u4e8c\u5f15\u6570\u3067\u5727\u7e2e\u30ec\u30d9\u30eb\u3092\u6307\u5b9a\u3067\u304d\u307e\u3059\u3002\u6307\u5b9a\u3057\u306a\u3044\u5834\u5408\u306f Zlib \u30e9\u30a4\u30d6\u30e9\u30ea\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u5024 6 \u304c\u9069\u7528\u3055\u308c\u3001CS2,3,4 \u7b49\u304c\u51fa\u529b\u3059\u308b SWF \u306e Zlib\u5727\u7e2e\u3082\u30006 \u76f8\u5f53\u3067\u3059\u3002CPU \u3068\u30d5\u30a1\u30a4\u30eb\u30b5\u30a4\u30ba\u306e\u30c8\u30ec\u30fc\u30c9\u30aa\u30d5\u3067\u3001\u3053\u306e\u5024\u3092\u8abf\u6574\u3059\u308b\u306e\u3082\u624b\u3067\u3059\u3002<\/li>\n<\/ul>\n<h3 id=\"hs_92360b1c1a70ca4d5fddb91b4e1990e4_header_16\"> \u53c2\u8003URL<\/h3>\n<ul>\n<li> <a href=\"http:\/\/www.adobe.com\/devnet\/swf.html\">http:\/\/www.adobe.com\/devnet\/swf.html<\/a><\/li>\n<li> <a href=\"http:\/\/www.m2osw.com\/swf_tag_definebitslossless\">http:\/\/www.m2osw.com\/swf_tag_definebitslossless<\/a><\/li>\n<li> <a href=\"http:\/\/pwiki.awm.jp\/~yoya\/?Flash\/SWF\/format\/Lossless\">http:\/\/pwiki.awm.jp\/~yoya\/?Flash\/SWF\/format\/Lossless<\/a><\/li>\n<li> <a href=\"http:\/\/www.w3.org\/TR\/PNG\/\">http:\/\/www.w3.org\/TR\/PNG\/<\/a><\/li>\n<li> <a href=\"http:\/\/www.geocities.co.jp\/Playtown-Knight\/6845\/sd_doc\/format_png.html\">http:\/\/www.geocities.co.jp\/Playtown-Knight\/6845\/sd_doc\/format_png.html<\/a><\/li>\n<li> <a href=\"http:\/\/homepage2.nifty.com\/sophia0\/png.html\">http:\/\/homepage2.nifty.com\/sophia0\/png.html<\/a><\/li>\n<li> <a href=\"http:\/\/bb.watch.impress.co.jp\/cda\/bbword\/15612.html\">http:\/\/bb.watch.impress.co.jp\/cda\/bbword\/15612.html<\/a><\/li>\n<\/ul>\n<h3 id=\"hs_92360b1c1a70ca4d5fddb91b4e1990e4_header_17\"> \u6b21\u56de\u672a\u5b9a<\/h3>\n<ul>\n<li> DefineEdit(\u30c6\u30ad\u30b9\u30c8\u30dc\u30c3\u30af\u30b9), DefineShape(\u30d9\u30af\u30bf\u30fc\u753b\u50cf), DefineSprite(\u30b7\u30f3\u30dc\u30eb)\u3001DoAction(AcrionScript2.0 ByteCode)\u7b49\u3001\u3054\u8981\u671b\u304c\u3042\u308c\u3070\u7d9a\u304d\u307e\u3059\u3002<\/li>\n<\/ul>\n<div class=\"footnote\">\n<p id=\"hs_92360b1c1a70ca4d5fddb91b4e1990e4_footnote_1\"><a href=\"#hs_92360b1c1a70ca4d5fddb91b4e1990e4_footnotelink_1\">*1<\/a>: SWF 8 \u4ee5\u964d\u3067\u306f DefineBitsJPEG \u7cfb\u306e\u30bf\u30b0\u306b PNG \u30c7\u30fc\u30bf\u3092\u683c\u7d0d\u3067\u304d\u308b\u3088\u3046\u3067\u3059\u304c\u3001\u305d\u308c\u306b\u306f\u89e6\u308c\u307e\u305b\u3093<\/p>\n<p id=\"hs_92360b1c1a70ca4d5fddb91b4e1990e4_footnote_2\"><a href=\"#hs_92360b1c1a70ca4d5fddb91b4e1990e4_footnotelink_2\">*2<\/a>: PNG \u306f R,G,B \u5404\u3005\u3092 16bit \u3067\u8868\u73fe\u3059\u308b 48bit \u30d5\u30eb\u30ab\u30e9\u30fc\u3082\u8868\u73fe\u51fa\u6765\u307e\u3059\u304c\u3001\u305d\u306e\u8aac\u660e\u306f\u7701\u304d\u307e\u3059<\/p>\n<p id=\"hs_92360b1c1a70ca4d5fddb91b4e1990e4_footnote_3\"><a href=\"#hs_92360b1c1a70ca4d5fddb91b4e1990e4_footnotelink_3\">*3<\/a>: alpha\u5024\u3084 opaque \u7b49\u3068\u547c\u3070\u308c\u308b\u4e8b\u304c\u591a\u3044\u3067\u3059<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u3053\u3093\u306b\u3061\u306f\u3002\u30e1\u30c7\u30a3\u30a2\u958b\u767a\u306e\u3088\u3084\u3067\u3059\u3002 \u4eca\u56de\u306f\u3001PNG \u753b\u50cf\u5165\u308c\u66ff\u3048\u306b\u3064\u3044\u3066\u304a\u8a71\u3057\u307e\u3059\u3002 PNG \u306e\u60c5\u5831\u3092\u683c\u7d0d\u3067\u304d\u308b\u30bf\u30b0 DefineBitsLossless, DefineBitsLossless2 \u304c\u5229\u7528\u51fa\u6765\u307e\u3059\u3002(* [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[9],"tags":[18,23,8,27],"class_list":["post-1902","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-info","tag-flash","tag-image","tag-php","tag-png"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/labs.gree.jp\/blog\/wp-json\/wp\/v2\/posts\/1902","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/labs.gree.jp\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/labs.gree.jp\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/labs.gree.jp\/blog\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/labs.gree.jp\/blog\/wp-json\/wp\/v2\/comments?post=1902"}],"version-history":[{"count":3,"href":"https:\/\/labs.gree.jp\/blog\/wp-json\/wp\/v2\/posts\/1902\/revisions"}],"predecessor-version":[{"id":21147,"href":"https:\/\/labs.gree.jp\/blog\/wp-json\/wp\/v2\/posts\/1902\/revisions\/21147"}],"wp:attachment":[{"href":"https:\/\/labs.gree.jp\/blog\/wp-json\/wp\/v2\/media?parent=1902"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/labs.gree.jp\/blog\/wp-json\/wp\/v2\/categories?post=1902"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/labs.gree.jp\/blog\/wp-json\/wp\/v2\/tags?post=1902"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}