如何使用 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
我必须删除图像背景颜色并使其透明。我正在使用以下代码使图像透明,但这不起作用。
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