0

gif/jpegファイルの黒い背景を透明な背景に置き換えようとしています.PhotoShopを介して手動でこれを1つずつ行うのは面倒なので、PHPを使用しようと考えました. これは私が使用しているコードですが、機能しません。

何故ですか?

$image = imagecreatefromgif( 'items/item_spear06.gif' );
imagealphablending($image, true);
$transparentcolour = imagecolorallocate($image, 0,0,0);
imagecolortransparent($image, $transparentcolour);

そして、私が得た画像は、前回と同じ画像で、png形式だけでした。


アップデート

$image = imagecreatefromgif( 'items/sword/iv_sword_refined19.gif' );

//get pixel data
$rgb = imagecolorat($image, 10, 10);
$r = ($rgb >> 16) & 0xFF;
$g = ($rgb >> 8) & 0xFF;
$b = $rgb & 0xFF;

$index = imagecolorexact($image, $r, $g, $b); 
if ($index === -1) {
    $index = imagecolorallocate($image, $r, $g, $b);
}
imagecolortransparent($image, $index);

var_dump($r, $g, $b);

// Save the image
imagepng($image, 'imagecolortransparent.png');
imagedestroy($image);

var_dump が返すint(0) int(0) int(0)ようになりました:int(4) int(2) int(4)

4

1 に答える 1

0

ここで少し気まぐれですが、ここで選択した色 (黒) は既にパレットに存在していると思います。そのため、パレットでその色を見つけて、その色を透明に設定しようとします。存在しない場合は、次を使用できますimagecolorallocate

$image = imagecreatefromgif( 'items/item_spear06.gif' );
$index = imagecolorexact($image, 0, 0, 0); 
if ($index === -1) {
    $index = imagecolorallocate($image, 0, 0, 0);
}
imagecolortransparent($image, $index);

左上のピクセルの色を取得するには

$index = imagecolorat($image, 0, 0);
$rgb = imagecolorsforindex($image, $index);
于 2013-05-13T18:31:11.463 に答える