使用php gd或imagemagick将大小从4764px调整为960px,以kb为单位创建相似大小的图像(970kb



我试图将4764 × 2680像素的图像调整为960px宽度的图像,保留其长宽比。当直接使用Imagemagick命令行工具执行此操作时,输出图像将在75kb左右,但在我尝试在Laravel/php应用程序中以编程方式调整大小时,输出图像大小超过800kb!几乎与原始图像相同大小,分辨率为4x +。

我不确定我是否错过了什么,但我不明白输出图像如何在KBs中如此之大。我正在使用干预/图像包,并尝试使用两个可用的驱动程序:gd和imagick来调整大小,但输出几乎是相同的。

public function resize($image)
{
$img = Image::make($image);
$img->resize(960, null, function ($constraint) {
$constraint->aspectRatio();
});
$img = $img->save();
return $img;
}

Imagemagick脚本,创建75kb的图像:

#!/usr/bin/env bash
# Purpose: batch image resizer
# Source: https://guides.wp-bullet.com
# Author: Mike
# absolute path to image folder
FOLDER="aws_images_redux"
# max height
HEIGHT=960
# max width
WIDTH=960

#resize png or jpg to either height or width, keeps proportions using imagemagick
#find ${FOLDER} -iname '*.jpg' -o -iname '*.png' -exec convert {} -verbose -resize $WIDTHx$HEIGHT> {} ;
find ${FOLDER} -iname '*.jpg' -exec convert {} -verbose -resize $WIDTHx$HEIGHT> {} ;
find ${FOLDER} -iname '*.png' -exec convert {} -verbose -resize $WIDTHx$HEIGHT> {} ;
#resize png to either height or width, keeps proportions using imagemagick
#find ${FOLDER} -iname '*.png' -exec convert {} -verbose -resize $WIDTHx$HEIGHT> {} ;
#resize jpg only to either height or width, keeps proportions using imagemagick
#find ${FOLDER} -iname '*.jpg' -exec convert {} -verbose -resize $WIDTHx$HEIGHT> {} ;
# alternative
#mogrify -path ${FOLDER} -resize ${WIDTH}x${HEIGHT}% *.png -verbose

在文档中,您可以看到save()有几个选项:

质量(可选)

可选择定义图像的质量。它对所有人都是标准化的文件类型的取值范围从0(低质量,小文件)到100(最好)质量,大文件)。质量只适用于JPG格式格式,因为PNG压缩是无损的,不影响图像质量。默认值为90。

你需要降低这个值

最新更新