Imagecolortransparent()用于多种颜色

时间:2016-12-28 03:22:41

标签: php image png transparency

我使用此代码使所有白色像素透明:

$img = imagecreatefromjpeg('test.jpg');
$remove = imagecolorallocate($img, 255, 255, 255);
imagecolortransparent($img, $remove);
imagepng($img, 'bla.png');

但我也希望一些“几乎白”的像素像254, 255, 255那样透明等。我怎么能添加呢?

2 个答案:

答案 0 :(得分:0)

如果您的问题是如何删除具有相似颜色范围的连续区域;我必须说使用PHP的GD库很难。你应该看一下ImageMagick这是一个功能更强大的图像处理库并拥有PHP integration

如果您选择使用ImageMagick,您将可以访问许多执行令人惊叹的图像处理的第三方脚本。其中之一是Fred Weinhaus' MagicWand。它可以满足您的需求。

您使用xy坐标对其进行播种,它可以提取该坐标的颜色,并使用可配置的颜色相异度阈值(模糊因子)使其透明。看看它如何匹配蓝色渐变:

magicwand's magic

答案 1 :(得分:0)

我遇到了同样的问题。带有黑白图像。但是白色并不是很白。所以在设置透明度之前,我做了一个过滤器来增加对比度。我有一个真正的黑色和真正的白色的图像。当我在白色上使用透明度时,效果很好。

过滤器示例:

imagefilter($src,IMG_FILTER_CONTRAST,-50);