使用PHP和ImageMagick以编程方式将RGB图像转换为1位灰度(b / w)
发布时间:2020-12-13 16:48:24 所属栏目:PHP教程 来源:网络整理
导读:我正在尝试使用 PHP(版本:5.2.13)和ImageMagick(版本:6.7.8-7-Q16)以编程方式将位图RGB图像转换为1位灰度(b / w)位图图像.输入图像是位图,通过ImageMagick函数生成: bool Imagick::setFormat ( string $format ) 其中$format =’bmp2′ 以下代码过去曾用
我正在尝试使用
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’是图像格式的选择. 有任何想法吗?谢谢! 解决方法
我只做了这个,它创建了一个黑白图像:
$im = new Imagick(); $im->readimage($filename); $im->resizeimage($width,$height,Imagick::FILTER_UNDEFINED,1,false); $im->posterizeimage(2,false); $im->writeimage($filename.".bmp"); 它会创建一个标识为: $identify example.png.bmp example.png.bmp BMP 1742x236 1742x236+0+0 1-bit PseudoClass 2c 52.1KB 0.000u 0:00.000 2c说它只包含2个colos,但是hte图像没有索引的颜色表. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |