IMG_FILTER_COLORIZE 问题

发布于 2024-12-03 19:18:41 字数 771 浏览 1 评论 0原文

我已经在论坛上得到了一些关于如何使用 imagefilter IMG_FILTER_COLORIZE 获得着色功能的很好的建议。

问题是它无法按照我希望的方式工作,下面的链接最好地说明了这一点: http://expromo.pl/klienci/imagefilter/

我有一个包含某种形状的透明png 。 我想要:

  • 改变形状的颜色,就像 Photoshop 图层设置/ 着色将
  • 保留透明度
  • 将其另存为另一个 PNG 文件

这是我的代码:

$im = imagecreatefrompng('image.png');
imagealphablending($im, false);

if($im && imagefilter($im, IMG_FILTER_COLORIZE, 0,0,255,0))
{
    imagepng($im, 'image-new.png');
    imagedestroy($im);
}

在上面的链接上: http://expromo.pl/klienci/imagefilter/

第一张图片是我所拥有的。第二张图片是我得到的,第三张图片是我想要得到的。

非常感谢。

I already got some great advice on the forums how to get the colorize function using imagefilter IMG_FILTER_COLORIZE.

The problem is that it doesn't work as I want it to work, the link below illustrates it best:
http://expromo.pl/klienci/imagefilter/

I have a transparent png containing some kind of shape.
I want to:

  • Change the color of the shape just as Photoshop Layer Settings /
    Colorize would
  • Preserve the transparency
  • Save it as another PNG file

Here is my code:

$im = imagecreatefrompng('image.png');
imagealphablending($im, false);

if($im && imagefilter($im, IMG_FILTER_COLORIZE, 0,0,255,0))
{
    imagepng($im, 'image-new.png');
    imagedestroy($im);
}

On the link above:
http://expromo.pl/klienci/imagefilter/

The first image is what I have. The second image is what I get, and the third image is what I want to get.

Big thanks in advance.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

著墨染雨君画夕 2024-12-10 19:18:41

您必须添加 imagesavealpha($im, true); 以便将 Alpha 通道保存在新图像上。

$im = imagecreatefrompng('image.png');
imagealphablending($im, false);

imagesavealpha($im, true);

if($im && imagefilter($im, IMG_FILTER_COLORIZE, 0,0,255,0)) {
    imagepng($im, 'image-new.png');
    imagedestroy($im);
}

You must add imagesavealpha($im, true); so the alpha channel will be saved on the new image.

$im = imagecreatefrompng('image.png');
imagealphablending($im, false);

imagesavealpha($im, true);

if($im && imagefilter($im, IMG_FILTER_COLORIZE, 0,0,255,0)) {
    imagepng($im, 'image-new.png');
    imagedestroy($im);
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文