$im = imagecreatefrompng('./test.png');
$white = imagecolorallocate($im, 255, 255, 255);
imagecolortransparent($im, $white);
这段代码可以很好地从图像中删除纯白色,但是我想做的是将所有颜色转换为alpha百分比。例如,中灰色是50%的透明黑色。因此,如果将中灰色图像放在顶部,则会显示其后面的图像。
这是可能的使用PHP或扩展?
我刚刚为您编写并测试了这个脚本。
$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);
}
}
对于大的图像它可能有点慢,但是它就像你想要的那样工作。=)
希望这个答案是可以接受的。好运。