PHP プラットフォームで動作するサイトにアップロードされた画像の白い背景を削除したいと考えています。アップロード機能は完了していますが、この機能がめちゃくちゃです。
ここで見つけたリンクは次のとおりです。 画像から白い背景を削除して透明にします
しかし、これは逆のことをしています。色付きの背景を取り除き、背景を透明にした画像にしたいです。
PHP プラットフォームで動作するサイトにアップロードされた画像の白い背景を削除したいと考えています。アップロード機能は完了していますが、この機能がめちゃくちゃです。
ここで見つけたリンクは次のとおりです。 画像から白い背景を削除して透明にします
しかし、これは逆のことをしています。色付きの背景を取り除き、背景を透明にした画像にしたいです。
必要なのは単色の透明度だけなので、最も簡単な方法は。で白を定義することimagecolortransparent()
です。このようなもの(テストされていないコード):
$img = imagecreatefromstring($your_image); //or whatever loading function you need
$white = imagecolorallocate($img, 255, 255, 255);
imagecolortransparent($img, $white);
imagepng($img, $output_file_name);
function transparent_background($filename, $color)
{
$img = imagecreatefrompng('image.png'); //or whatever loading function you need
$colors = explode(',', $color);
$remove = imagecolorallocate($img, $colors[0], $colors[1], $colors[2]);
imagecolortransparent($img, $remove);
imagepng($img, $_SERVER['DOCUMENT_ROOT'].'/'.$filename);
}
transparent_background('logo_100x100.png', '255,255,255');
画像内の白色のインデックスを取得し、透明に設定します。
$whiteColorIndex = imagecolorexact($img,255,255,255);
$whiteColor = imagecolorsforindex($img,$whiteColorIndex);
imagecolortransparent($img,$whiteColor);
正確な色がわからない場合は、代わりに imagecolorclosest() を使用できます。
PHP 画像処理と GD を使用し、RGB コンポーネントがすべて 255 (ピクセルが白) の場合は画像をピクセル単位で読み取り、アルファ チャネルを 255 (透明) に設定します。アップロードされたファイル タイプがアルファ チャンネルをサポートしているかどうかによっては、画像のファイル タイプを変更する必要がある場合があります。