添加水印的主要目的是为了版权保护,使自己的图像不被抄袭或者恶意转载。网上有很多制作水印的工具,本帖介绍怎么使用ImageMagick给图片添加水印。
很多Linux发行版都默认安装了ImageMagick;
Ubuntu安装ImageMagick:
$ sudo apt-get install imagemagick
Ubuntu 编译安装 ImageMagick:http://www.linuxdiyf.com/linux/23307.html
原始图片:
获得图片的大小:
$ identify orginpic.png
orginpic.png PNG 670x452 670x452+0+0 8-bit sRGB 620KB 0.000u 0:00.010
# 获得图片的宽
$ identify -format %w orginpic.png
670
# 获得图片的高
$ identify -format %h orginpic.png
452
使用composite命令添加标签:
$ composite label:'blog.topspeedsnail.com' orginpic.png withlabel.png
在图像左上角添加了标签:
上面方法添加的水印不带任何效果,很没劲。
下面使用convert在图像底部添加标签:
$ convert orginpic.png -background Khaki label:'blog.topspeedsnail.com' -gravity center -append water-khaki.png
底部的空间是扩展出来的,不覆盖原始图片。
下面我们来做一个真正的水印:
# 获得图像宽度
$ width=$(identify -format %w orginpic.png)
$ convert -background '#0008' -fill white -gravity center -size ${width}x30 caption:blog.topspeedsnail.com orginpic.png +swap -gravity south -composite watermark.png
你可以尝试组合不同的背景和颜色。
下面我写了一个简单的bash脚本,实现对一个目录中的所有图片添加水印。
watermark.sh:
ori_dir="original" # 备份原始图片
mkdir $ori_dir
if [ $? -ne 0 ] ; then
echo "创建目录失败."
exit 1
fi
for image in *png *jpg *gif
do
if [ -s $image ] ; then
width=$(identify -format %w $image)
convert -background '#0008' -fill white -gravity center \
-size ${width}x30 caption:blog.topspeedsnail.com \
$image +swap -gravity south -composite new-$image
mv $image $ori_dir
mv new-$image $image
echo "为 $image 添加水印"
fi
done
进入图片目录执行脚本:
$ bash watermark.sh
为 orginpic.png 添加水印
为 test.png 添加水印
$ ls
orginpic.png original test.png watermark.sh