红联Linux门户
Linux帮助

使用ImageMagick添加图片水印-Linux

发布时间:2016-08-14 15:19:27来源:topspeedsnail.com作者:斗大的熊猫
添加水印的主要目的是为了版权保护,使自己的图像不被抄袭或者恶意转载。网上有很多制作水印的工具,本帖介绍怎么使用ImageMagick给图片添加水印。
 
很多Linux发行版都默认安装了ImageMagick;
Ubuntu安装ImageMagick:
$ sudo apt-get install imagemagick
Ubuntu 编译安装 ImageMagick:http://www.linuxdiyf.com/linux/23307.html
 
原始图片:
使用ImageMagick添加图片水印-Linux
 
获得图片的大小:
$ 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
 
在图像左上角添加了标签:
使用ImageMagick添加图片水印-Linux
 
上面方法添加的水印不带任何效果,很没劲。
 
下面使用convert在图像底部添加标签:
$ convert orginpic.png -background Khaki label:'blog.topspeedsnail.com' -gravity center -append water-khaki.png
使用ImageMagick添加图片水印-Linux
 
底部的空间是扩展出来的,不覆盖原始图片。
 
下面我们来做一个真正的水印:
# 获得图像宽度
$ 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
使用ImageMagick添加图片水印-Linux
 
你可以尝试组合不同的背景和颜色。
 
下面我写了一个简单的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
 
本文永久更新地址:http://www.linuxdiyf.com/linux/23306.html