使用PHP将图像转换为Alpha透明度

时间:2011-07-19 20:20:00

标签: php image image-processing transparency alpha-transparency

$im = imagecreatefrompng('./test.png');
$white = imagecolorallocate($im, 255, 255, 255);
imagecolortransparent($im, $white);

此代码适用于从图像中删除纯白色,但我想要做的是将所有颜色转换为alpha百分比。例如,中灰色为50%透明黑色。因此,如果放在顶部,那么中等灰度的图像会显示其背后的图像。

这可能是使用PHP还是扩展名?

1 个答案:

答案 0 :(得分:0)

我刚刚为您编写并测试了此脚本。

$imfile = './test.png';
$origim = imagecreatefrompng($imfile);
$im_size = getimagesize($imfile);

$im = imagecreatetruecolor($im_size[0], $im_size[1]);
imagealphablending($im, false);
imagesavealpha($im, true);

for ($x = 0; $x < $im_size[0]; ++$x){
    for ($y = 0; $y < $im_size[1]; ++$y){
        $rgb = imagecolorat($origim,- $x, $y);
        $r = ($rgb >> 16) & 0xFF;
        $g = ($rgb >> 8) & 0xFF;
        $b = $rgb & 0xFF;
        $color = imagecolorallocatealpha($im, 0, 0, 0, intval(($r+$g+$b)/3/255*127)); 
        imagesetpixel($im, $x, $y, $color);
    }
}

大图像可能有点慢,但它的工作方式与您想要的一样。 =)

希望这个答案是可以接受的。祝你好运。