透過を指定しろと書いてるが、何指定したらいいかわからなかった。
透過を維持したまま画像を縮小させる関数(smart_resize_image)を作った人がいて、
このソースを見て参考にしたらできた。
header('Content-Type: image/gif'); $image = imagecreatefrompng($_GET['imgUrl']); // Create a new transparent color for image $color = imagecolorallocatealpha($image, 0, 0, 0, 127); // Completely fill the background of the new image with allocated color. imagecolortransparent($image, $color); imagegif($image);
imagedestroy($image);
pngの透過で指定されている値をそのままGIF生成前に教えてあげればいいだけ。α値を忘れずに指定しよう。PHPマニュアルにはないから困ったほんと。
このスクリプトはGETパラメータとして受け取ったPNG画像のURLをそのままGIF画像として出力しているだけ。
ちなみにPOSTでパラメータ送ると、I.E.、FireFoxで画像を保存をできない。両者は画像保存時にもう一回、URLを参照して画像を取りに行くから。もう一度POSTデータを送信してくれてるわけじゃないらしいから、画像を作れず壊れます。GETでURLをユニークしちゃえば何度でも生成できる。