TOC

convert 图片转换的一次示例

ImageMagick 是 Linux 下的一个常用的图像处理工具,核心命令是 convert, identify 等。

type convert identify
# identify is /usr/bin/identify
# convert is /usr/bin/convert
ll /usr/bin/convert /usr/bin/identify
# lrwxrwxrwx 1 root root 25 2018-09-27 14:23:05 /usr/bin/convert -> /etc/alternatives/convert
# lrwxrwxrwx 1 root root 26 2018-09-27 14:23:05 /usr/bin/identify -> /etc/alternatives/identify
ll /etc/alternatives/convert /etc/alternatives/identify
# lrwxrwxrwx 1 root root 24 2018-09-27 14:22:52 /etc/alternatives/convert -> /usr/bin/convert-im6.q16
# lrwxrwxrwx 1 root root 25 2018-09-27 14:22:52 /etc/alternatives/identify -> /usr/bin/identify-im6.q16

apt-file search /usr/bin/convert-im6.q16
apt show imagemagick
apt-file list imagemagick-6.q16 | grep /bin/
# imagemagick-6.q16: /usr/bin/animate-im6.q16
# imagemagick-6.q16: /usr/bin/compare-im6.q16
# imagemagick-6.q16: /usr/bin/composite-im6.q16
# imagemagick-6.q16: /usr/bin/conjure-im6.q16
# imagemagick-6.q16: /usr/bin/convert-im6.q16
# imagemagick-6.q16: /usr/bin/display-im6.q16
# imagemagick-6.q16: /usr/bin/identify-im6.q16
# imagemagick-6.q16: /usr/bin/import-im6.q16
# imagemagick-6.q16: /usr/bin/mogrify-im6.q16
# imagemagick-6.q16: /usr/bin/montage-im6.q16
# imagemagick-6.q16: /usr/bin/stream-im6.q16

原图

素材:sample1.jpg

sample1.jpg

素材:sample2.jpg

sample2.jpg

素材:sample3.jpg
sample3.jpg

素材:sample4.jpg

sample4.jpg

素材:sample5.jpg

sample5.jpg

过程

查看图片信息

identify sample*.jpg
# sample1.jpg JPEG 600x461 600x461+0+0 8-bit sRGB 13981B 0.000u 0:00.000
# sample2.jpg JPEG 600x461 600x461+0+0 8-bit sRGB 18451B 0.000u 0:00.000
# sample3.jpg JPEG 600x458 600x458+0+0 8-bit sRGB 26178B 0.000u 0:00.000
# sample4.jpg JPEG 600x464 600x464+0+0 8-bit sRGB 27345B 0.000u 0:00.000
# sample5.jpg JPEG 600x290 600x290+0+0 8-bit sRGB 36580B 0.000u 0:00.000

横向拼接

convert +append sample{1,2}.jpg markjour1.jpg
convert -resize 600x markjour1.jpg markjour1.jpg

convert +append sample{3,4}.jpg markjour2.jpg
convert -resize 600x markjour2.jpg markjour2.jpg

convert -resize 600x sample5.jpg markjour3.jpg

纵向拼接

convert -append -quality 70 markjour{1..3}.jpg full.jpg

最终效果

其他

我常用的 convert 参数

  • -resize 缩放
  • -sample 50% 和 resize 功能类似,不过只采样,不插值(表现就是放大时,resize 会模糊,sample 则马赛克)
  • +/-append 拼接
  • -quality 70 图片质量
  • -crop WxH+X+Y 裁剪
  • -transparent white 将某种颜色设为透明,在有些情况下,真香
  • -flatten -background '#eee' 将透明色去掉,替换成指定底色

没有用过的 convert 参数

  • delay 可以生成 GIF

webp

ImageMagick 不支持 webp
PS: 现在好像支持了 Update @ 2021/09/25

sudo apt install -y webp
  • cwebp
  • dwebp

这两个命令也用得多,一方面网页上下下来的图片很多都是 webp 格式了,再一方面,自己也常用 webp 格式图片在网页上。

具体用法就看 manpage,比较简单。