我想改变图像的颜色,但保持透明度。我不能使用fill()
方法,因为它有一个规则的清晰规则,而且我的图像是不规则的。那么干预/图像应该怎么办?
答案 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的图像中完成,这是一个完全中性的灰色,以便获得正确的颜色。
这是一个非常古老的问题,但我希望这有助于其他遇到同样问题的人。