利用ImageMagick給圖片加水印
水印可能是文字白群,也可能是網(wǎng)站的logo等屈芜。圖片水印比較簡單,就是把自己水印圖標合成到原始圖片上喻粹;文字水印中如果字符包含中文蟆融,處理就稍微麻煩一些。
- 圖片水印處理
假設(shè)把名為logo.gif的水印圖標添加在原始圖片(src.jpg)右下角守呜,且水印的下邊緣距原始圖片10像素型酥、右邊緣距原始圖片5像素。使用如下命令即可:
convert src.jpg logo.gif -gravity southeast -geometry +5+10 -composite dest.jpg
- 文字水印處理
如果不含中文字符查乒,可以直接通過convert draw text的方式將文字添加到圖片弥喉,否則就需要使用其它的辦法。命令行中不能包括中文字符玛迄,但是能通過讀取文件的方式來操作由境,即先把中文信息保存到文本文件中。注意:文本文件的編碼最好用UTF-8蓖议,同時也需要選取一個支持中文的字體虏杰。直接把文本文本中的信息輸出到圖片上使用命令mogrify,不過也可以使用convert命令把文本文件中的信息生成一個圖片勒虾,然后再把圖片合成到原始圖片中纺阔。下面分別介紹這幾種方法。
不含中文字符:例如把www.netingcn.com作為水印加上圖片上修然,命令如下
convert src.jpg -gravity southeast -fill black -pointsize 16 -draw "text 5,5 'http://www.netingcn.com'" dest-c.jpg
mogrify -pointsize 16 -fill black -weight bolder -gravity southeast -annotate +5+5 "http://www.netingcn.com" src.jpg
說明:上述兩條命令達到同樣的結(jié)果笛钝,但是第一次命令可以保留原始圖片,第二條是直接在原始圖片上打上水印愕宋。
存在中文的情況:假設(shè)存有信息的文件叫t.txt玻靡,字體文件是msyh.ttf。
方法1:
//把文件t.txt中的信息生成圖片txt.png, -transparent white讓圖片的背景透明掏婶,-size x30設(shè)置圖片的高度
convert -transparent white -font msyh.ttf -fill black -pointsize 24 label:@t.txt txt.png
//把txt.png合成到src.jpg上
convert src.jpg txt.png -gravity southeast -geometry +10+5 -composite dest.jpg
方法2:
convert src.jpg -transparent white -font msyh.ttf -fill black -pointsize 24 -size x30 label:@t.txt -gravity southeast -geometry +10+5 -composite dest.jpg
方法3:
mogrify -font msyh.ttf -pointsize 24 -fill black -weight bolder -gravity southeast -annotate +20+20 @"t.txt" src.jpg
說明:上述第一啃奴、二種方法都有瑕疵,第二種背景不能變成透明雄妥,第一種雖然生成的圖片可以透明最蕾,但是合成到原始圖上效果不是很理想依溯,第三種是完全透明的,所以推進用第三種方式來操作