Linux中使用Imagemagick批量调整图片大小

过大的图片意味着用户的页面加载速度慢。如果站点曾经没有限制图像大小或者自动调整大小,那么在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

  • 微信或QQ扫一扫

留下评论