ImageMagick 教程

ImageMagick图标

ImageMagick 是一款开源且功能全面的图像格式转换命令行工具,替代了很多简单的 GUI 图片操作,易用性极高。

下载方式

通过命令行下载:

Windows 用户

# 1. 访问官网下载
https://imagemagick.org/download/#windows&gsc.tab=0
# 2. 通过 powershell 下载
winget install ImageMagick.ImageMagick

macOS 用户

brew install imagemagick

Linux 用户

sudo apt update
sudo apt install imagemagick

或者直接通过官网下载:

GitHub 仓库:https://github.com/imagemagick/imagemagick

官网:https://github.com/imagemagick/imagemagick

基本功能

作为一款

概览:

功能名 指令概览
查看图片参数 magick identify xx.png
图像格式转换 magick xx.png xx.webp
调整图像大小 magick input.jpg -resize 800x600 output.jpg
翻转和旋转 magick input.jpg -rotate 90 output.jpg
裁剪图像 magick input.jpg -crop 400x400+0+0 output.jpg
模糊 magick tiger.jpg -blur 5X5 tiger2.jpg

我将以我的头像为例介绍 ImageMagick 的基本功能。

该图片是 WebP 格式的。至于为什么是 WebP?因为该格式在现在浏览器解析性能很高,且文件体积比 PNG 小(你也不想因为网卡而加载不出这张 1080x1080 的图片吧)。

查看图片参数

不需要 GUI,我们可以通过magick identify直接查看图片的详细参数。

magick identify trats-avatar.webp
# 输出
trats-avatar.webp WEBP 1080x1080 1080x1080+0+0 8-bit sRGB 122006B 0.001u 0:00.001

[这里画张框图]

图像格式转换

该工具还以实现非常便捷的图像格式转换。接下来是操作方法:

magick trats-avatar.webp trats-avatar.png  # WebP 转 PNG 格式

同理,我们也可以转换到其他格式:

magick trats-avatar.webp trats-avatar.JPG  # WebP 转 JPG 格式

进一步,我们还能批量处理图片

# 将某一文件夹下的所有 .png 转换为 .jpg 格式
for ff in *.png; do magick $ff $ff.jpg; done

# convert all png in a dir to jpg
# file name should not contain ttt. if so, change ttt to hhh or something random
find . -name "*png" -print0 | xargs -0 -L1 -I ttt magick ttt ttt.jpg

调整图像大小

将 input.jpg 调整为 180x180 的尺寸:

magick input.jpg -resize 800x600 output.jpg

也可以使用百分比调整尺寸:

magick input.jpg -resize 50% output.jpg

翻转和旋转

这里展示最常用的顺时针旋转 90°. -rotate 参数默认顺时针旋转。

magick input.jpg -rotate 90 output.jpg

数值可以为负,表示逆时针旋转。

magick input.jpg -rotate -60 output.jpg

裁剪图像

magick input.jpg -crop 400x400+0+0 output.jpg

400x400 表示裁剪后的尺寸,+0+0 表示裁切起点的偏移量。坐标系以左上角为原点,右向下向为正。

像调整图片大小一样,裁切单位也可以是百分比。对于裁 1/2 1/4 这种需求来说,百分比还是更方便的。

magick input.jpg -crop 50%x50%+0+0 output.jpg

模糊

magick tiger.jpg -blur 5X5 tiger2.jpg

高级功能

高级功能并不常用。比如实际上 ImageMagick 还适配移动端的操作系统,以及 ImageMagick 的所有指令都有很多参数可以调控。

具体内容详见官网里面列出的功能列表。

-quality 参数

转换指令中,参数 -quality 用于指定转换过程中保留图像细节的程度。-quality 的数值为 0-100%,缺省时默认为 92%. 也就是说默认的图像转换是有损的。

-quality 的计算方法没有固定的标准,是一个参考数值,具体需要看这个工具是怎么实现的。*

magick xx.png -quality 90% xx.jpg  # 将 PNG 文件 xx 转换为 JPG 格式,转换质量为 90%

常见图片格式

格式 是否有损压缩 色彩数 是否支持动画
PNG 无损 真彩色 不支持
JPEG 有损 真彩色 不支持
WebP 即支持有损也支持无损 真彩色 支持
GIF 有损 256 色(8 位索引色) 支持

参考

本文参考以下文章撰写:

http://xahlee.info/img/imagemagic.html【ImageMagick Tutorial】

https://blog.eimoon.com/p/image-processing-with-imagemagick-guide/