web-dev-qa-db-ja.com

imagepng()とGdライブラリの透明度PHP

PHPで関数imagepng()を使用する場合、保存する画像が透明な背景で保存されていることを確認するにはどうすればよいですか?

16
Strawberry

imagecolortransparent 関数の例を次に示します(役立つ場合)。

<?php
// Create a 55x30 image
$im = imagecreatetruecolor(55, 30);
$red = imagecolorallocate($im, 255, 0, 0);
$black = imagecolorallocate($im, 0, 0, 0);

// Make the background transparent
imagecolortransparent($im, $black);

// Draw a red rectangle
imagefilledrectangle($im, 4, 4, 50, 25, $red);

// Save the image
imagepng($im, './imagecolortransparent.png');
imagedestroy($im);
?>
10
Eric

単にこれを行う:

imagealphablending($img, false);
imagesavealpha($img, true);

出力する前に。すべてのソースファイル(使用している場合)が透明度のあるPNG 32ビットに設定されていることを確認してください。そうでない場合は、出力が黒の背景で異なるか、透明度が準拠していません。

48
mauris

これが例です

     $newimage = imagecreatetruecolor($dst_w, $dst_h);
     imagealphablending($newimage, false);
     imagesavealpha($newimage, true);
     $transparentindex = imagecolorallocatealpha($newimage, 255, 255, 255, 127);
     imagefill($newimage, 0, 0, $transparentindex);
16
user2731504

imagecolortransparent という関数があり、どの色を透明にするかを設定できます。これがあなたの質問に答えるかどうかはわかりません。

0
lamelas