【问题标题】:Imagick - When resizing, image gets blurryimagick - 调整大小时,图像变得模糊
【发布时间】:2018-07-06 19:13:36
【问题描述】:

我正在尝试调整 pdf 的大小(我从图像转换而来),并且我正在尝试调整(增加)图像的比例。

$imagick = new \Imagick();
$imagick->readImage($path);

$imagick->resizeImage(595,842,\Imagick::FILTER_CUBIC, 1, true);

// and this:
// $imagick->adaptiveResizeImage(595,842, true); 

$imagick->setImageFormat('pdf');
$imagick->writeImage($endpath);

但是图像变得模糊。但是,这不是一个质量差的图像,并且图像可以达到那个大小而不会受到干扰。 (例如,如果我让 Twilio 来做(通过传真 api),同样的图像可以达到那个比例)。

我也尝试过将 resizeImage 的模糊参数放在 '1' 和 '0.1' 之间

pdf原件(你也可以see it here,如果你想试试):

我调整大小的 pdf(模糊 1):

我的“自适应调整大小”pdf:

【问题讨论】:

    标签: php pdf resize imagemagick imagick


    【解决方案1】:

    如果光栅化和放大,您将从一个非常小的 pdf 开始。所以会造成模糊。但是如果你增加输入密度,它在 ImageMagick 中对我来说很好

    convert -density 600 input.pdf -resize 595x842 result.png
    

    我不太了解 Imagick,但请尝试以下操作。根据需要减少 resizeImage 中的模糊值,使其更清晰。

    $imagick = new \Imagick();
    $imagick->readImage($path);
    $imagick->Imagick::setImageResolution( 600, 600 );
    $imagick->resizeImage(595,842,\Imagick::FILTER_CATROM, 1, true);
    $imagick->setImageFormat('pdf');
    $imagick->writeImage($endpath);
    

    【讨论】:

    • 我正在尝试将“pdf 转换为 pdf”,而不是“pdf 转换为 png”。 $imagick->Imagick::setImageResolution( 600, 600 ); 仅使页面大小为 600x600。我认为这不是答案。
    • setImageResolution,我相信是设置密度。阅读php.net/manual/en/imagick.setimageresolution.php 的文档。阅读 PDF 时,必须在阅读 PDF 之前设置密度。使用大的密度会使光栅化的图像尺寸更大。然后您可以调整到更小的尺寸并获得高质量的结果。
    • Your answer here - 有助于理解决议
    猜你喜欢
    • 1970-01-01
    • 2013-03-03
    • 2019-10-02
    • 2018-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多