我目前正面临与ImageMagick进行“mergeImageLayers”操作后的图像质量问题。我合并了三个单独的.png图片,每个图片最初都是22KB,看起来很好。在“merging-prozess”之后,我得到了质量差的5KB图片,如.png或.jpeg。
如何构建压缩方法以确保更高质量?目前,图像几乎无法使用。这是我构建的功能(它也进行颜色替换):
function mergeImages($BASE,$MASK,$TEXT,$TARGET,$FILL,$FUZZ){
$layerMethodType = \Imagick::LAYERMETHOD_COMPARECLEAR;
$img1 = new Imagick(realpath($BASE));
$img1->floodFillPaintImage($FILL, $FUZZ* \Imagick::getQuantum(),$TARGET,0,0, true);
$fuzz = $FUZZ* $img1->getQuantumRange()['quantumRangeLong'];
$img1->opaquePaintImage($TARGET, $FILL, $fuzz, false, Imagick::CHANNEL_DEFAULT);
$img2 = new Imagick(realpath($MASK));
$img1->addImage($img2);
$img1->setImageFormat('png');
$img3 = new Imagick(realpath($TEXT));
$img3->floodFillPaintImage($FILL, $FUZZ* \Imagick::getQuantum(),$TARGET,0,0, true);
$fuzz = $FUZZ* $img1->getQuantumRange()['quantumRangeLong'];
$img3->opaquePaintImage($TARGET, $FILL, $fuzz, false, Imagick::CHANNEL_DEFAULT);
$img1->addImage($img3);
$img1->setImageFormat('jpeg');
$result = $img1->mergeImageLayers($layerMethodType);
header("Content-Type: image/jpeg");
$result->getImageBlob();
return $result;
}
希望有人可以帮我解决这个问题。我已经尝试了以下内容:
$img1->setImageFormat('jpeg');
$img1->setImageCompression(\Imagick::COMPRESSION_NO );
和
$img->setCompression(Imagick::COMPRESSION_JPEG);
$img->setCompressionQuality(90);
作为.jpeg或.png在所有情况下新图像都有5KB
Thx提前为您提供帮助!
我尝试了不同的图像,KB很明显地上升了。简单的图片,如图标,一个playicon为instatance简单看起来不好。另一边的照片压缩得很好,质量很好。但“压缩问题”仍然存在 - >上面提到的解决方案简单不起作用。现在我必须做“compress_image()”workarround。