我正在使用Imagick的PHP模块为细节重新着色,直到现在,我一直在使用6.9.6-2版本,但任务没有问题,但是在更新到7.0.7-11之后,setImageAlphaChannel(Imagick::ALPHACHANNEL_SHAPE)
并没有工作正常。
ver6中的输出为:https://i.imgur.com/QaxNKwq.png
ver7中的输出为:https://i.imgur.com/xujoiDu.png
如果仅用ALPHACHANNEL_EXTRACT
提取Alpha,它将保留图像的所有细节,但是一旦更改颜色后对它进行整形,就会破坏质量。
function colorLayers($color,$path,$name,$detailCounter) {
$imagedata = $path.'\\'.$name.'\\color'.$detailCounter.'.png';
$imagick = new Imagick($imagedata);
$imagick->setImageAlphaChannel(Imagick::ALPHACHANNEL_EXTRACT);
$imagick->setImageBackgroundColor($color);
$imagick->setImageAlphaChannel(Imagick::ALPHACHANNEL_SHAPE);
$base64 = base64_encode($imagick);
return $base64;
}