IO_SWF 2.3.0 をリリースしました
(前回、bitmapAlpha2PNG という新機能を追加したので 2.3.0 にするつもりが忘れてました。)
プレマルチファイドアルファの考慮を入れました。
ChangeLog
- 意図せず輪郭が黒くなる場合には、これで治る可能性が高いです
- swfreplaceactionstrings.php で複数の入れ替えが同時にできるようにした。
- bitmapAlpha2PNG の最後に imagedestroy 入れました (リークしてました)
コード
static function bitmapAlpha2PNG($bitmapdata, $bitmapalpha) { $im = imagecreatefromstring($bitmapdata); $width = imagesx($im); $height = imagesy($im); imagesavealpha($im, true); imagealphablending($im, false); $i = 0; for ($y = 0 ; $y < $height ; $y++) { for($x = 0 ; $x < $width ; $x++) { $c = imagecolorat($im, $x, $y); $rgba = imagecolorsforindex($im, $c); $red = $rgba['red']; $green = $rgba['green']; $blue = $rgba['blue']; if ($i < $bitmapalpha_len) { $alpha = ord($bitmapalpha[$i++]); } else { $alpha = 255; } if ($alpha > 0) { $red = min($red * 255 / $alpha, 255); $green = min($green * 255 / $alpha, 255); $blue = min($blue * 255 / $alpha, 255); } $alpha_gd = 127 - $alpha/2; $i++; $color = imagecolorallocatealpha($im, $red, $green, $blue, $alpha_gd); imagesetpixel($im, $x, $y, $color); } } ob_start(); // ---- stdout to memory imagepng($im); $pngdata = ob_get_contents(); ob_end_clean(); // ---- imagedestroy($im); return $pngdata; }