我必须删除图像背景颜色并使其透明。我使用下面的代码来使图像透明,但这不起作用。
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');
请查看屏幕截图,以便更好地理解我要做的事情。
提前致谢...
答案 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