【问题标题】:How to resize image with imagick php如何使用imagick php调整图像大小
【发布时间】:2021-07-20 15:32:37
【问题描述】:

使用 imagick 命令,我想将图像从 2Mb 调整为 200KB,我试过了:

convert a.jpg -strip -define jpeg:extent=200k a1.jpg

而且它有效。但我想使用 php 的 imagick 函数来调整 blob 图像的大小。

关于 resizeImage 方法的 PHP 文档需要宽度和高度。

如何像上面的命令行一样将 blob 图像从 2Mb 调整为 200Kb。

我试过了:

    $imageBlob = file_get_contents('a.jpg');
    $image = new \Imagick();
    $image->readImageBlob($imageBlob);
    $height = $image->getImageHeight();
    $width = $image->getImageWidth();
    $image->resizeImage( $width, $height,  \Imagick::FILTER_LANCZOS, 1 );
    $finfo = finfo_open(FILEINFO_MIME_TYPE);
    $mime = finfo_buffer($finfo, $image->getImageBlob());
    $mime == "image/svg" && $mime.= "+xml";
    $base64 =  "data:$mime;base64," . base64_encode($image->getImageBlob());
    echo "<img src=\"".$base64.'">';die;

但这并没有将大小从 2Mb 减少到 200Kb

【问题讨论】:

  • 您显示的命令行命令不会将图像大小减小到 200kB。它将图像大小调整为 200 像素宽。
  • 要调整到仅适用于 JPG 的特定文件大小,请参阅 -define jpeg:extent at legacy.imagemagick.org/Usage/formats/#jpg_write
  • @Mark Setchell,我已经更新了脚本
  • @ fmw42,我想使用 Php 的 Imagick 来调整它的大小,而不是命令

标签: php imagemagick imagick


【解决方案1】:

我没有对此进行测试,但我相当确定您可以像这样使用setOption 来设置 JPEG 文件大小的上限:

$imagick->setOption('jpeg:extent', $extent);

【讨论】:

    猜你喜欢
    • 2023-03-16
    • 2015-11-03
    • 2015-06-16
    • 1970-01-01
    • 2017-04-26
    • 2014-05-23
    • 1970-01-01
    • 1970-01-01
    • 2012-02-28
    相关资源
    最近更新 更多