我的编程平台是:
我的代码:
$img = new Imagick($image_input_24bit_bmp);
$img->setimagedepth(8);
$img->writeImage($image_output);
然后image_output仍然是24位bmp图像。
我想要的是将24位bmp图像转换为8位bmp图像。 感谢。
答案 0 :(得分:1)
setImageDepth
还不够。您需要quanitize
图片。
示例:测试脚本
$im = new imagick('stupid.png'); //an image of mine
$im->setImageFormat('PNG8');
$colors = min(255, $im->getImageColors());
$im->quantizeImage($colors, Imagick::COLORSPACE_RGB, 0, false, false );
$im->setImageDepth(8 /* bits */);
$im->writeImage('stupid8.png');
答案 1 :(得分:1)
你可以像这样强制一个8位palettised BMP图像(我猜你的意思):
$im = new imagick('input.bmp');
$im->quantizeImage(256,Imagick::COLORSPACE_RGB,0,false,false);
$im->writeImage('result.bmp');
这将有256种颜色的调色板(每一个8位红色,加上8位绿色,加上8位蓝色),每个像素将由其在该调色板中的索引表示。