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」が選択されています。
何か案は?ありがとう!