4

重複の可能性:
次のコードを使用して、Ruby を PHP コードに変換します。

画像の白い背景色を削除するための非常に便利な Ruby コードを見つけました。

以下の参照コードを参照してください: 画像から白い背景を削除し、透明にします

コードをphpに翻訳してみました。しかし、私は望ましくない結果を得ています。ここに質問を投稿するのはこれが初めてです。誰かがガイドラインを教えてください。私の下手な英語を許してください。

function setTransparency($new_image,$image_source) 
{         
    $transparencyIndex = imagecolortransparent($image_source); 
    $transparencyColor = array('red' => 255, 'green' => 255, 'blue' => 255); 

    if ($transparencyIndex >= 0) { 
        $transparencyColor = imagecolorsforindex($image_source, $transparencyIndex);    
    } 

    $transparencyIndex = imagecolorallocate($new_image, $transparencyColor['red'], $transparencyColor['green'], $transparencyColor['blue']); 
    imagefill($new_image, 0, 0, $transparencyIndex); 
    imagecolortransparent($new_image, $transparencyIndex); 

}

//create image from the source link
$image = imagecreatefrompng('http://i.stack.imgur.com/k7E1F.png');

//create image mask layer
$new_image = ImageCreateTruecolor(imagesx($image), imagesy($image));

//remove white background 
setTransparency($new_image,$image); 

//merge mask with original image source
ImageCopyMerge($new_image, $image, 0, 0, 0, 0, imagesx($image), imagesy($image), 100);

imagejpeg($new_image, null, 95);
4

1 に答える 1

5

JPEG 形式は透明度をサポートしていません。出力形式としてpngを使用することを検討する必要があります。最後の行を次のように変更します。

imagepng($new_image, null, 9);
于 2013-01-08T04:25:13.797 に答える