如何使用 php 去除 png 图像的白色背景颜色?

How to remove png image white background color using php?

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

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

请查看屏幕截图以更好地理解我正在尝试做的事情。

提前致谢...

盒子内的实际颜色(puma 的脸周围)不是 255:255:255 而是 252:254:251。至少大部分都是这样。

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

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

只是给你一个疯狂的想法,因为你的屏幕截图显示了一个网络浏览器,假设它是一个网络应用程序,你可以使用 HTML5 上下文做同样的事情,你可以 select canvas 并在该区域编辑其图像数据。即 select 带有 puma 的白色方块,并将所有白色(或颜色范围)像素的 alpha 设置设置为 0。更多阅读 HTML5 canvas 像素操作 https://dev.opera.com/articles/html5-canvas-basics/#pixelbasedmanipulation