在干预/图像中,如何更改png文件的非透明部分的颜色?

时间:2016-06-27 07:47:58

标签: php intervention

我想改变图像的颜色,但保持透明度。我不能使用fill()方法,因为它有一个规则的清晰规则,而且我的图像是不规则的。那么干预/图像应该怎么办?

1 个答案:

答案 0 :(得分:3)

我找到了一种方法,可以在干预中使用colorize功能。

$image = Image::make($path);
$color = '#abcdef';

$r = round((hexdec(substr($color, 1, 2)) * 200) / 255) - 100;
$g = round((hexdec(substr($color, 3, 2)) * 200) / 255) - 100;
$b = round((hexdec(substr($color, 5, 2)) * 200) / 255) - 100;

// Apply or remove color from a neutral #7F7F7F color image
$image->colorize($r,$g,$b);

我将十六进制颜色的每个组件转换为dec,然后将其转换为-100到100的比例,以在colorize函数中使用它。这必须在完全#7F的图像中完成,这是一个完全中性的灰色,以便获得正确的颜色。

这是一个非常古老的问题,但我希望这有助于其他遇到同样问题的人。