【问题标题】:Imagick JPEG to PNG conversion想像 JPEG 到 PNG 的转换
【发布时间】:2015-01-16 09:38:12
【问题描述】:

我需要将 JPEG Imagick 图像转换为 PNG,同时保持 JPEG 图像的 imageCompressionQuality。我已经尝试使用复合图像以及克隆 $image 来实现这一点,但两者都采用原始质量(在 JPEG 文件的图像压缩之前)。

$image = new Imagick($image_name);
$image->resizeImage($imageWidth, $imageHeight, Imagick::FILTER_LANCZOS, 1);
$image->setImageFormat("jpeg");
$image->setImageCompression(imagick::COMPRESSION_JPEG);
$image->setImageCompressionQuality(00);
$image->stripImage();

方法一:

$finalImage = new Imagick();
$finalImage->newImage($imageWidth, $imageHeight, "none");
$finalImage->compositeimage($image, Imagick::COMPOSITE_OVER, 0, 0);
$finalImage->setImageFormat("png");
echo $finalImage;

方法2:

$finalImage = clone $image;
etc.

有没有办法做到这一点?

【问题讨论】:

    标签: php png jpeg imagick


    【解决方案1】:

    想出一种方法来完成这项工作 - 我使用 writeImage 将临时文件写入服务器,然后从临时对象创建一个新的 Imagick 对象。这保留了 jpg 文件的压缩。

    $image->writeImage($image_name . "temp.jpg");
    
    $finalImage = new Imagick($image_name . "temp.jpg");
    $finalImage->setImageFormat("png");
    echo $finalImage;
    
    unlink($image_name . "temp.jpg");
    

    【讨论】:

      【解决方案2】:
      1. “质量”设置不是 JPEG 的一部分。它只是一些编码器用于选择量化表的简写。

      2. PNG 中没有与量化表选择等效的功能。 PNG是一种无损压缩。所有设置的输入就是输出。

      【讨论】:

        猜你喜欢
        • 2011-03-15
        • 1970-01-01
        • 2018-04-15
        • 2011-01-18
        • 1970-01-01
        • 1970-01-01
        • 2017-07-02
        • 2019-10-27
        • 1970-01-01
        相关资源
        最近更新 更多