很多时候,突然遇到需要拼图或制作动图,这时,为了单纯的做一张效果图,调出各大内存燃烧专具图片处理软件过于繁琐,但专门去下载一个 “一次性” 软件又不那么方便。命令行工具 ImageMagick (IM) 提供了一个集万物于一身的快捷处理方式

动图 Animation

因为学生党,经常会需要给别人发 step by step 教程,这种时候如果截一堆图然后按顺序一张一张发过去,自己麻烦对方看着也麻烦

一打要「云丢」出去有关新冠病毒的截图


这时候,把 n 张截图快速的做个动图就显得整洁很多

$ convert -delay 100 -loop 0 第一张.png 第二张.png 第三张.png 第四张.png 动图名字.gif

  • -delay 后面的 100 代表的是 1 fps,即每秒一帧

如果想在动图中额外暂停,可以在对应的图片前插入 -delay 100 来实现

$ convert -delay 100 -loop 0 第一张.png -delay 100 第二张.png 第三张.png 第四张.png 动图名字.gif

  • 在第二张图之后会额外暂停一秒

‼️注意

  • 如果动图没有完成,不要直接生成.gif的文件,在再制作时会出现撞帧的 bug。IM 提供了一个解决方案,可以将动图生成为 IM 的内部格式 .imff

图片大小和格式更改

有时候手上有一张 .png,但因为上传大小受限,.jpg 可能是更好的选择,这时可以选择用把图片转换格式

magick convert 图片.png 输出的图片.jpg


如果转成 .jpg 大小还不够,可以顺手再把图片分辨率也砍一下

magick convert 图片.png -resize 50% 输出的图片.jpg

  • 输出一张长宽像素数都是原图一半的图

magick convert 图片.png -resize 100x 输出的图片.jpg

  • 输出一张长度不变、宽度为 100 像素的图

magick convert 图片.png -resize x100 输出的图片.jpg

  • 输出一张宽度不变、长度为 100 像素的图

magick convert 图片.png -resize 100x100 输出的图片.jpg

  • 输出一张长宽分别为 100 像素的图

如果需要的话虽然应该不太会用到,裁剪图片的指令如下

$ convert -crop 想要的宽度x想要的长度+开始的宽度+开始的长度 要剪裁的图.jpg 输出的图.jpg

想要的长宽都可以是像素或者原图尺寸的百分比


拼图:一条指令拼长图

拼图,真的很伤。在大多常用图片编辑软件中都没有直接拼图的功能,经常只能扩大其中一张图的尺寸,再将另一张图片粘贴进去,不但耗时,还很繁琐。而 IM 为终端加入了一个“一键”拼图的功能
$ convert -append 第一张图.png 第二张图.jpg 成果图名字.jpeg

-append是竖向拼图;+append代表横向。支持不同格式图片的拼图,输出的图片也可以自己定义

当然,这种时候因为截图名称的格式问题,手打名字很不方便,整理提供两种解决方案

  • 最简单的是把文件通过 Finder 直接拖拽到 Terminal 窗口中,Terminal 会自动获取路径
  • 当然,如果同时合成多张图片的时候,拖拽容易出错,这时多选文件之后右键 > 重命名多个项目 > 格式,快速批量重命名
  • 同样,如果蕾丝操作内容比较多,可以借用一个简单的 Automator Quick Action 重命名一下文档

‼️注意

  • append 拼图只有单纯的拼接功能,对不同大小 / 分辨率的图片无能为力


叠图:加上水印

偶尔需要叠加一个水印,但等打开 Photoshop,叠加一张水印,再导出到 .png

$ magick composite -gravity center 叠印上的图.png rose: 底图.png

center 代表叠印的图片将叠加在图片正中间 left 和 right 可以将图片叠在两侧


好玩的小功能:加密

$ magick 要加密的.png -encipher 密码文件.txt 加密后输出的名字.png

这段命令会把 要加密的.png 通过 密码文件.text 制作一张加密图,图片将由根据图片和文件组合生成的噪点代替

$ magick 加密后输出的名字.png -decipher 密码文件.txt 解密后输出的名字.png

上面的这张图会通过密码文件和噪点图复原原图,再把这张图输出

‼️注意

  • 要保存好加密文件,一旦文件丢失,图片就再也恢复不了啦
  • 密码文件.txt 可以通过另一张图片 密钥图片.png 来代替,即用另一张图片来加密这张图片
  • 文件的 Metadata 会被保留,如编辑信息等,这个功能只单纯的更改图片的像素排列

最后

文中简述了 5 种日常会用到的功能,而在 IM 的官网上提供了 34 类不同的命令,包括许多进阶的操作,感兴趣的同学可以仔细研究

‼️所有这些功能都是在图片编辑软件中能完成的操作,本文只是单纯的介绍了一种快速、终端内能完成的解决方式。细节方面指令能做的也有限,如果想要精细的编辑,还是老老实实把内存推起来吧