首页 > 解决方案 > 使用 PHP ImageMagick 为图像着色 - 保持白色像素为白色

问题描述

在此处输入图像描述

我想用 ImageMagick 为图像着色,如图所示。但是当我这样做时

$image_color1 = new Imagick('file.png');
$image_color1->setImageType(Imagick::IMGTYPE_GRAYSCALEMATTE);
$color1 = new \ImagickPixel("rgb(0, 0, 220)");
$image_color1->colorizeImage($color1, 1, true);

白色像素变成黄色,如图所示。

当我像这样使用 PHP 图像过滤器时

imagefilter($image_color1, IMG_FILTER_COLORIZE, 0, 0, 220)

如果没有不同的颜色,它看起来好多了。所以我的问题是:如何使用 PHP 和 ImageMagick 接收如上所示的彩色图像(白色需要再次变为白色)。

或者:我可以将 PHP“IMG_FILTER_COLORIZE”与 ImageMagic 结合使用吗?这将如何工作?

标签: phpimagemagickcolorize

解决方案


您可以执行以下 Imagemagick 命令行的 PHP 等效项,该命令行创建 LUT 并将其应用于灰度图像。

输入:

在此处输入图像描述

convert img.png -colorspace gray \( -size 1x1 xc:blue xc:white +append -resize 256x1 \) -clut x.png

在此处输入图像描述

或者

convert img.png -negate \( +clone -fill blue -colorize 100 -negate \) -compose multiply -composite -negate x.png

在此处输入图像描述


推荐阅读