因此,在 Photoshop 中有一种称为“颜色”的透明图层模式,它保留下面图层的亮度,但从当前图层获取色调/饱和度。
我需要使用 PHP 动态更改某些图像的颜色,除了通常的乘法/加法/等之外,我无法找到有关执行此操作的算法的任何信息。
因此,在 Photoshop 中有一种称为“颜色”的透明图层模式,它保留下面图层的亮度,但从当前图层获取色调/饱和度。
我需要使用 PHP 动态更改某些图像的颜色,除了通常的乘法/加法/等之外,我无法找到有关执行此操作的算法的任何信息。
我怀疑该算法是将两个图像从 RGB 转换为 HSV,然后将色调通道复制到基础图像。
ImageMagick 有一个色调复合运算符,它是imagick::COMPOSITE_HUE
在 PHP 中的。根据此处的评论,这应该有效:
<?php
$img1 = new Imagick("image1.png");
$img2 = new Imagick("image2.png");
$img1->compositeImage($img2, imagick::COMPOSITE_HUE, 0, 0);
header('Content-type: image/png');
echo $img1;
?>
有一个库可以帮助您满足“photoshop”风格要求。它被称为pslayers。
您可以使用任何您想要的混合模式,并根据需要堆叠任意数量的图层。它也支持过滤。