【发布时间】:2016-07-24 06:13:06
【问题描述】:
我想知道并找出如何用不透明像素着色/替换图像的任何像素,即不(完全)透明的像素。
例如,有一个带有透明像素的多色徽标,我想将其转换为只有颜色#ff0000 的徽标,而不更改透明背景。
我想通过 PHP Imagick 库来实现这一点。我找不到任何好的文档。
我认为 Imagick::thresholdImage 会是一个助手,但没有关于阈值参数的文档。
使用此代码片段可获得最佳结果。但仍然不能完美地工作。一些像素 - 我猜那些 alpha > 0 和
$image = new \Imagick($source);
$image->setImageFormat('png');
$fill = new \ImagickPixel('#ff0000');
$image->thresholdImage(0);
$image->paintOpaqueImage('#ffffff', $fill, 1);
$image->writeImage($destination);
【问题讨论】:
-
我不是 100% 确定您真正想要做什么,但我认为您希望将您的 alpha/透明度通道限制为 100% 或 0% 且没有中间值,因此您需要设置阈值你的 alpha 通道,所以我想你想设置背景颜色,然后做类似
thresholdImage(Imagick::getQuantum()-1,imagick::CHANNEL_ALPHA)
标签: php imagemagick imagick