使用PHP反转颜色并保持透明度

时间:2017-06-17 04:19:16

标签: php gd

我正在尝试创建一个接收PNG图像并以反转颜色返回它的函数。但是,我在透明度/ alpha通道上遇到了问题:基本上,透明像素会以黑色或白色的形式返回,因此不会保留透明度。

这是一个源图像的示例(当然会有所不同),一个带有透明背景的PNG:

https://angular-ui.github.io/bootstrap/#!#modal

我想在保留透明度/ alpha通道的同时反转这些颜色,就像在Photoshop中使用CTRL + I.我正在使用带有imagefilter参数

的GD IMG_FILTER_NEGATE函数

使用代码:

$im = imagecreatefrompng($image_file);

imagefilter($im, IMG_FILTER_NEGATE);

header('image/png');

imagepng($im,NULL,0);

但它产生了:

enter image description here

如您所见,透明像素变黑。

然后我尝试将alpha通道添加到函数imagecreatefrompng(如enter image description here)中:

$im = imagecreatefrompng($image_file);

imagealphablending($im, false);

imagesavealpha($im, true);

imagefilter($im, IMG_FILTER_NEGATE);

header('image/png');

imagepng($im,NULL,0);

但现在我变白了而不是黑色:

this

现在问题似乎发生在应用imagefilter功能之后。例如,如果我运行此代码:

$im = imagecreatefrompng($image_file);

imagealphablending($im, false);

imagesavealpha($im, true);

//imagefilter($im, IMG_FILTER_NEGATE);

header('image/png');

imagepng($im,NULL,0);

输出图像保留其透明背景,同时保持与原始图像相同。

如何在不丢失透明背景的情况下反转透明PNG的颜色?

注意:这是enter image description here相同的问题 - 反转步骤是这里的棘手部分

0 个答案:

没有答案