【发布时间】: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