图像文件大小调整后与Imagick和Gmagick


Image filesize after resizing with Imagick and Gmagick

在调整图像大小时,我注意到Imagick和Gmagick在HDD上使用相同的选项产生不同文件大小的图像:

$image = new Imagick("c.jpg");
$image->thumbnailImage(260,195); 
$image->writeImage("c_imagick.jpg");

输出一张88kb的图片

$image = new Gmagick("c.jpg");
$image->thumbnailImage(260,195); 
$image->writeImage("c_gmagick.jpg");

输出15kb的图像

有人知道为什么差异如此之大吗?

尝试在调整大小之前设置图像压缩设置。

     $image->setImageCompression(Imagick::COMPRESSION_JPEG);
     $image->setImageCompressionQuality(80);

另外,检查结果图像的大小。PHP文档中的注释使我相信thumbnailImage的自动适配部分不像您在IMagick中期望的那样工作。

From PHP Docs:

thumbnailImage的fit功能不像预期的那样工作。相反,使用>this来创建一个最大200x82的缩略图:

    // Create thumbnail max of 200x82
    $width=$im->getImageWidth();
    if ($width > 200) { $im->thumbnailImage(200,null,0); }
    $height=$im->getImageHeight();
    if ($height > 82) { $im->thumbnailImage(null,82,0); }