简介

博客中,难免要为有些图片打上水印。下面摘录两个打文字水印的方法。
摘录来自博客图像处理 - ImageMagick 简单介绍与案例

工具使用的是强大的ImageMagick, Mac下可以通过Homebrew来安装。安装命令

1
brew install imagemagick

给图片打上透明的文字水印

命令:

1
2
convert -draw 'text 0,0 "WWW.JIBING57.COM"' -fill 'rgba(221, 34, 17, 0.25)' -pointsize 36 \
-font Arial -gravity center src.png src_with_watermark.png

解释:

  • -draw:绘图选项,text 声明绘制文本, 0,0 声明文本距离图片左上角的偏移值, WWW.JIBING57.COM 声明绘制的文本,最好用引号包裹起来,避免输入特殊字符引起错误。绘制文本的格式为 text x,y string,当然还可以绘制其他类型,诸如圆 ( circle )、折线 ( polyline )。
  • -fill:对文本填充颜色,貌似 ImageMagick 命令中前面的选项是用来控制后面的选项的,所以应该把这样的修饰选项放到 -draw 前面比较好,很重要,后面的案例就是这样的。
  • -pointsize:指定文本的字体大小。
  • -font:指定字体。
  • -gravity:设置文本在图片里的排列方式 ( 类似 CSS 里的 align-items + justify-content ),center 表示水平垂直都居中,其他值还可以是:NorthWest, North, NorthEast, West, East, SouthWest, South, SouthEast,不记大小写。
  • \:反斜线也是类 Unix 系统的续行字符,当一个命令很长时,我们可以把它写成多行,以便视觉上的美观和直观。

给图片打上倾斜平铺透明文本水印

命令:

1
2
3
4
convert -size 200x200 xc:none \
-fill '#d90f02' -pointsize 18 \
-gravity center -draw 'rotate -45 text 0,0 "WWW.JIBING57.COM"' \
-resize 60% miff:- | composite -tile -dissolve 25 - src.png src_with_watermark.png

解释:文本平铺水印其实是将文本画成一张 png 图片,然后用这张透明图片在目标图片上进行平铺。

  • -size:设置画布的大小。
  • xc:全称 X Constant Image,是 canvas: 的别名,定义一张画布,用来绘图,常用格式为 xc:color,none 或者 transparent 设置画布为透明底,默认为白色。
  • -resize:该选项还可以指定百分比,意为缩放至原图像的百分之几。貌似 -pointsize 小于 14 后,-draw 里的 rotate 会不生效,所以用 -resize 来把平铺图案变得更小。
  • miff:-
    • miff: 声明输出 ImageMagick ( IM ) 自己的图像文件格式:MIFF,主要用途是以复杂的方式处理图像时当做中间保存格式,适用于从一个 IM 命令向另一个 IM 命令传递图像元数据和其他关联属性。
    • - 在管道符前面意为将 IM 命令执行的结果作为标准输出,在管道符后面则表示从标准输入中读取这个数据,如在管道符后面的 composite 中使用 - 读取刚刚生成的透明图像。
  • |:Linux shell 管道符,用于将上一个命令的标准输出传递到下一个命令作为标准输入。这里将生成的水印图案传递给 composite 命令。
  • -tile:顾名思义,让图案平铺。
  • -dissolve:设置平铺图案的透明度

例子:

原图:
chusai.jpg

在左上角打上透明的文字LOGO”SHY09”

1
2
convert -draw 'text 0,0 "SYH09"' -fill 'rgba(221, 34, 17, 0.25)' -pointsize 72 \
-font Arial -gravity NorthWest chusai.jpg chusai_watermark.jpg

生成的图片水印图:
chusai_watermark.jpg

打上打上倾斜平铺透明文本水印:

1
2
3
4
convert -size 150x150 xc:none \
-fill '#d90f02' -pointsize 26 \
-gravity center -draw 'rotate -45 text 0,0 "SYH09"' \
-resize 60% miff:- | composite -tile -dissolve 40 - chusai.jpg chusai_tile_watermark.jpg

生成的图片水印图:
chusai_tile_watermark.jpg

Reference

留言