如何使用 imagick 调整图像大小 php
How to resize image with imagick php
使用 imagick 命令,我想将图像大小从 2Mb 调整为 200KB,我试过:
convert a.jpg -strip -define jpeg:extent=200k a1.jpg
并且有效。但是我想使用 php 的 imagick 函数来调整 blob 图像的大小。
Php 关于 resizeImage 方法的文档需要宽度和高度。
如何像上面的命令行一样将 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
我没有对此进行测试,但我相当确定您可以像这样使用 setOption 来设置 JPEG 文件大小的上限:
$imagick->setOption('jpeg:extent', $extent);
使用 imagick 命令,我想将图像大小从 2Mb 调整为 200KB,我试过:
convert a.jpg -strip -define jpeg:extent=200k a1.jpg
并且有效。但是我想使用 php 的 imagick 函数来调整 blob 图像的大小。
Php 关于 resizeImage 方法的文档需要宽度和高度。
如何像上面的命令行一样将 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
我没有对此进行测试,但我相当确定您可以像这样使用 setOption 来设置 JPEG 文件大小的上限:
$imagick->setOption('jpeg:extent', $extent);