过大的图片意味着用户的页面加载速度慢。如果站点曾经没有限制图像大小或者自动调整大小,那么在Linux中批量调整这些图像的大小是最佳解决办法。适合网站页面尺寸的图片大小,可以加速网页的加载速度。
本文将介绍如何在Linux中使用Imagemagick批量调整jpg和png文件的大小。
首先,需要在服务器上安装Imagemagick。
Debian或Ubuntu安装Imagemagick的方法:
sudo apt-get update sudo apt-get install imagemagick -y
CentOS安装Imagemagick的方法:
yum install -y ImageMagick ImageMagick-devel
安装成功后,我们可以使用identify
命令获取宽度(%w
)和高度(%h
),示例:
identify -format "%wx%h" image.jpg
将看到分辨率,前面是宽度,后面是高度,例如:
3960x2120
以下为调整单张图片尺寸的示例,将自动保留图像的纵横比。注意,这会覆盖原始文件,可先备份。
convert image.jpg -resize 600x400\> image.jpg
检查图像是否已调整大小:
identify -format "%wx%h" image.jpg
输出:
600x321
现在开始创建批量调整图片大小的脚本,执行脚本前请备份图片文件,因为会被新的尺寸图片文件覆盖。
mkdir -p ~/scripts nano ~/scripts/batch-image-resize.sh
将脚本粘贴到下面,记得更改相应的变量!FOLDER
是图像文件夹的绝对路径,WIDTH
是最大宽度,HEIGHT
是最大高度。
#!/usr/bin/env bash # Purpose: batch image resizer # Source: https://www.zhanzhangb.com # Author: Mike # absolute path to image folder FOLDER="/var/www/www.zhanzhangb.com/wp-content/uploads" # max width WIDTH=650 # max height HEIGHT=500 #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\> \{} \; #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
Ctrl + X,Y + Enter保存并退出。
执行脚本即可开始调整新的图片尺寸:
bash ~/scripts/batch-image-resize.sh