- ベストアンサー
PHPで透過PNGを減色する方法は?
- PHPのGDを使用して透過PNGを減色させる方法がわからない
- 画像処理関数imageTrueColorToPalette()を使用しても透過が保持されない
- 他の言語を使った方法も教えて欲しい
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
imagetruecolortopaletteは、透過色を保持したまま、減色するということは出来なさそうです。 やるとすれば、減色を行う前に、 imagecolortransparent http://jp2.php.net/manual/ja/function.imagecolortransparent.php で、透過色のIDを取得して、 imagecolorsforindex http://jp2.php.net/manual/ja/function.imagecolorsforindex.php で、透過色のIDに指定されている色情報を取得しておいて その後に、imagetruecolortopaletteで、減色して、 imagecolorsforindex関数で取得した色配列を、 imagecolorexact http://jp2.php.net/manual/ja/function.imagecolorexact.php で、減色後の画像から探してきて、 存在してたら imagecolortransparentで再設定する、って感じじゃないですかね。 <?php $resource = imagecreatefrompng($pngimg); $trns = imagecolortransparent($resource); $col = null; if($trns > 0){ $col = imagecolorsforindex($resource, $trns); } imagetruecolortopalette($resource, false, 255); if($col !== null){ $id = imagecolorexact($resource, $col['red'], $col['green'], $col['blue']); if($id != -1){ imagecolortransparent($resource, $id); } } ?> といった感じでしょうか。