利用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
說明:上述第一、二種方法都有瑕疵,第二種背景不能變成透明,第一種雖然生成的圖片可以透明,但是合成到原始圖上效果不是很理想,第三種是完全透明的,所以推進用第三種方式來操作