之前用Wordpress的时候装了个图片水印插件,效果很一般,凑活用(比如这篇文章的配图)。现在Myblog还不支持水印功能,也不准备支持,感觉还是自己加好水印再上传自由度更高一些。

Myblog运行后写头几篇文章时,为了方便给Markdown配图专门写了一个Bash脚本对图片进行预处理:

  1. 把heic格式转换成jpeg
  2. 去除Exif信息
  3. 压缩到合适的尺寸

脚本用到了ExifTool和ImageMagick两个命令行软件,后来优化了一下,去掉了ImageMagick, 用macOS自带一个sips命令替代。主要几个命令:

去除图片Exif信息(保留Orientation, 否则有些图片显示出来就歪了)

exiftool -all:all= -tagsFromFile @ -exif:Orientation input.jpeg

格式转换:

sips -s format jpeg -s formatOptions best -o out.jpeg input.heic

尺寸压缩(限制最大宽度):

sips --resampleWidth 1200 -o out.jpeg  input.jpeg

加水印一开始考虑用ImageMagick,但是后来发现sips还支持运行Javascript脚本, 通过Canvas API进行自定义图片生成,这样又不用ImageMagick了(这个包依赖太多,brew install起来真的又大又慢)。

sips给图片加文字水印:

sips -j watermark.js input.jpeg BLUEHUA.ORG

附带命令中使用的脚本watermark.js

这个水印脚本比之前的WP插件好用不少,可以根据图片亮度选择不同的文字颜色和透明度。而且由于图片是Canvas API生成的,不再携带原图的Exif信息,这样ExifTool也不用了,完全使用sips一个系统自带的命令。

亮图水印效果亮图水印效果
暗图水印效果暗图水印效果

之前的水印效果一比高下立判~