我正在尝试使用 PHP(版本:5.2.13)和 ImageMagick(版本:6.7.8-7-Q16)以编程方式将位图 RGB 图像转换为 1 位灰度(b/w)位图图像。输入图像是位图,通过 ImageMagick 函数生成:
bool Imagick::setFormat ( string $format )
其中 $format = 'bmp2'
以下代码过去可以工作(ImageMagick 的旧版本......不记得是哪一个),但在当前环境中不再工作:
private function monochrome() {
if (isset($this->image)) {
try {
// reduce image colors to 2 (black and white)
$this->image->quantizeImage(2, Imagick::COLORSPACE_GRAY, 5, false, true);
// reduce image depth to 1 bit per pixel
$this->image->setImageDepth(1);
$this->image->setImageChannelDepth(Imagick::CHANNEL_ALL, 1);
// set image type to monochrome (2 colors: black and white only)
$this->image->setImageType(Imagick::IMGTYPE_BILEVEL);
}
catch (ImagickException $ie) {
throw $ie;
}
}
else {
throw new Exception("No image object");
}
}
问题是生成的图像仍然在 RGB 颜色空间中。
我也试过:
$this->image->setImageColorSpace(Imagick::COLORSPACE_GRAY);
但结果并没有改变。
我的目标是为签名捕获应用程序生成尽可能小的黑白位图图像。我知道有比位图更好的图像格式,但生成的图像必须与旧的 Access 97 兼容。这就是为什么选择“bmp2”作为图像格式的原因。
有任何想法吗?谢谢!