• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:こんばんわ)

PHPで透過PNGを減色する方法は?

このQ&Aのポイント
  • PHPのGDを使用して透過PNGを減色させる方法がわからない
  • 画像処理関数imageTrueColorToPalette()を使用しても透過が保持されない
  • 他の言語を使った方法も教えて欲しい

質問者が選んだベストアンサー

  • ベストアンサー
回答No.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); } } ?> といった感じでしょうか。

関連するQ&A