7

PHP プラットフォームで動作するサイトにアップロードされた画像の白い背景を削除したいと考えています。アップロード機能は完了していますが、この機能がめちゃくちゃです。

ここで見つけたリンクは次のとおりです。 画像から白い背景を削除して透明にします

しかし、これは逆のことをしています。色付きの背景を取り除き、背景を透明にした画像にしたいです。

4

7 に答える 7

6

必要なのは単色の透明度だけなので、最も簡単な方法は。で白を定義すること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);
于 2012-05-25T08:55:56.077 に答える
4
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');
于 2012-11-13T14:48:38.773 に答える
1

画像内の白色のインデックスを取得し、透明に設定します。

$whiteColorIndex = imagecolorexact($img,255,255,255);
$whiteColor = imagecolorsforindex($img,$whiteColorIndex);
imagecolortransparent($img,$whiteColor);

正確な色がわからない場合は、代わりに imagecolorclosest() を使用できます。

于 2012-05-25T08:59:28.667 に答える
0

PHP 画像処理と GD を使用し、RGB コンポーネントがすべて 255 (ピクセルが白) の場合は画像をピクセル単位で読み取り、アルファ チャネルを 255 (透明) に設定します。アップロードされたファイル タイプがアルファ チャンネルをサポートしているかどうかによっては、画像のファイル タイプを変更する必要がある場合があります。

于 2012-05-25T08:49:13.057 に答える