如何使用PHP删除png图像白色背景颜色?

时间:2016-03-26 19:04:24

标签: php image-processing png

我必须删除图像背景颜色并使其透明。我使用下面的代码来使图像透明,但这不起作用。

function transparent_background($filename, $color) 
{
    $img = imagecreatefrompng('image.png'); //or whatever loading function you need
    $colors = explode(',', $color);
    $remove = imagecolorallocate($img, $colors[0], $colors[1], $colors[2]);
    imagecolortransparent($img, $remove);
    imagepng($img, $_SERVER['DOCUMENT_ROOT'].'/'.$filename);
}

transparent_background('logo_100x100.png', '255,255,255');

请查看屏幕截图,以便更好地理解我要做的事情。

enter image description here

提前致谢...

1 个答案:

答案 0 :(得分:1)

框内的实际颜色(美洲狮的脸部周围)不是255:255:255其252:254:251。至少对大多数人而言。

我将该颜色设置为您的函数“transparent_background”的输入,并将HTML背景颜色设置为栗色,结果为 http://www.photojoiner.net/view/?fid=LpEajVuDhXT7yqH6WBBuhJtT0m9I4NnY.jpeg

您可以创建循环并尝试使颜色范围透明。即从251:251:251到255:255:255。但不确定性能。

由于您的屏幕截图显示了一个Web浏览器,假设它是一个Web应用程序,您可以使用HTML5上下文执行相同操作,您可以在画布上选择一个区域并在该区域上编辑其imageData。即选择带有puma的白色方块并将所有白色(或颜色范围)像素的alpha设置设置为0.更多阅读HTML5画布像素操作https://dev.opera.com/articles/html5-canvas-basics/#pixelbasedmanipulation