PHP:如何将png文件的一部分设置为透明?

时间:2013-03-12 06:08:52

标签: php png transparent gd2

我有png文件,我希望这个图像(矩形)的某些部分是透明的。

例如:

伪代码:

<?php
$path = 'c:\img.png';
set_image_area_transparent($path, $x, $y, $width, $height);
?>

其中x,y,$ width,$ height在图像中定义矩形,应设置为透明。

是否可以在PHP中使用一些库?

2 个答案:

答案 0 :(得分:1)

首先,您需要为图像设置Alpha通道: http://www.php.net/manual/en/function.imagealphablending.php http://www.php.net/manual/en/function.imagesavealpha.php

其次,您需要为透明区域中的所有像素设置透明色: http://www.php.net/manual/en/function.imagecolorset.php

答案 1 :(得分:1)

是的,这是可能的。您可以在图像中定义一个区域,用颜色填充它,然后将该颜色设置为透明。它需要GD libraries的可用性。相应的manual for the command在示例中包含此代码:

<?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);
?>

在您的情况下,您将使用respective function拍摄现有图像。结果资源将是上面示例中的$ im,然后您将分配颜色,将其设置为透明并绘制上面的矩形,然后保存图像:

<?php
// get the image form the filesystem
$im = imagecreatefromjpeg($imgname);
// let's assume there is no red in the image, so lets take that one
$red = imagecolorallocate($im, 255, 0, 0);

// Make the red color transparent
imagecolortransparent($im, $red);

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

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