• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:GDを使って画像の背景を透過させたい)

GDを使って画像の背景を透過させる方法と注意点

このQ&Aのポイント
  • 画像の背景を透過させるためにはimagecolortransparent関数を使用します。
  • 複数色を透過させることはできませんが、透過色を指定することで一部の色を透明にすることが可能です。
  • また、透過処理を複数回行うことで、より自然な透明背景を実現することができます。

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

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

ざっと白っぽいjpegを透過pngにする方法です 元画像はwikipediaにあった雲の画像を適当に <?PHP $imgname="hogehoge.jpg"; $im = imagecreatefromjpeg($imgname); //$im = imagecreatefrompng($imgname); //pngから読むならこれ $background = imagecolorallocate($im, 255, 0, 0); //とりあえず真っ赤を背景に list($width, $height) = getimagesize($imgname); for($i=0;$i<$width;$i++){ for($j=0;$j<$height;$j++){ $rgb = imagecolorat($im, $i,$j); $r = ($rgb >> 16) & 0xFF; $g = ($rgb >> 8) & 0xFF; $b = $rgb & 0xFF; if($r>200 and $g>200 and $b>200) imagefill($im, $i, $j, $background); } } imagecolortransparent($im, $background); header('Content-Type: image/png'); imagepng($im); imagedestroy($im); ?>

その他の回答 (1)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

どうせ透過するなら複数色である必要はないのでは? (なぜなら結局みえないのだから) 同じ色に変更した上で透過設定してみては?

jimascript
質問者

補足

回答有り難うございます。 同じ色に変更ということですが、調べてみたところimagefilltoborderという関数が見つかりました。 ですが、この関数を使って上手く白っぽい背景を全て255, 255, 255にすることはできるのでしょうか。もしよろしければ変更をするための方法を大まかにでも良いのでご教授願えないでしょうか。 宜しくお願い致します。

関連するQ&A

専門家に質問してみよう