PHPでは、イメージを処理しようとしています。つまり、jpgファイルで周囲の色を透明にしようとしています。私は途中でGDライブラリを使用しています。jpgをpngに変換して色を透明にします。
イメージをimagecreatefromjpeg関数とimagepng関数を使用してpngに変換して直接出力することができます。しかし、私は特定の色を透明にする方法を見つけることができません。また、画像の中には、保存中に作成される黒い図形の周囲に明るい灰色のアーティファクトがあるものがあります。私もそれらを含めることができる方法はありますか?
私は一種の迷子です。私は画像上で色を透明にする答えを見つけましたが、画像をサーバーに保存せずに最初に変換してから処理する方法はわかりません。
アイデア?
編集:これまでのところ私のコードです。私は特定の色を透明にすることができましたが、周囲のものをまだ検出することはできません。
ほとんどの場合、許可されている画像形式で保存されたロゴやテキストであるため、画像は閉じられます。ですから、私はグラデーションに関する大きな問題はないと思いますが、影が落ちるような周囲のグラデーションで透明度を操作することができれば素晴らしいことでしょう。
png/gifイメージがすでに透過しているかどうかを検出する方法はありますか?私のコードは透明な部分を黒色に塗りつぶしています。
$file = 'images/18.jpg';
$specs = getimagesize($file);
if($specs[2] == 1) $img = imagecreatefromgif($file); //gif
elseif($specs[2] == 2) $img = imagecreatefromjpeg($file); //jpg
elseif($specs[2] == 3) $img = imagecreatefrompng($file); //png
else exit('unsupported file type!');
$newimg = imagecreatetruecolor(imagesx($img), imagesy($img));
// create a new image with the size of the old one
imagecopy($newimg,$img,0,0,0,0,imagesx($img),imagesy($img));
// copy the old one
imagedestroy($img);
// free the memory
$white = imagecolorallocate($newimg,255,255,255);
imagecolortransparent($newimg,$white);
// make white pixels transparent
header('Content-Type: image/png');
imagepng($newimg);
imagedestroy($newimg);
// and finally output the new image
ここにコードを投稿できますか? 'コードは普遍的な言語です'。 –
はい、申し訳ありません。私は私の質問を更新します。 – inhan