分類: Linux

ImageMagick 自動在照片上加入文字、圖片浮水印教學與範例指令稿

這裡介紹如何使用 ImageMagick 撰寫指令稿,自動在圖片上加上文字或圖片的浮水印,標註作者與版權等資訊。

如果想要把自己拍攝的照片放在網路上展示,但又不想讓人隨意下載回去做其他用途的話,就可以考慮在圖片中加入浮水印、文字標註或自己的 logo,註明版權宣告、攝影者等資訊,避免圖片被濫用。


ImageMagick 是一個功能強大的圖片處理工具,我們可以用它提供的各種指令來撰寫指令稿,自動在大量的照片中加上文字或圖片的浮水印。這裡我們以這張照片作為範例,示範加入各種樣式浮水印的指令用法。

範例圖片

文字標註與浮水印

要在圖片上標示資訊,最簡的方式就是直接打上文字,以下是在圖片的左下角加入文字的範例:

# 在左下角加入文字
convert photo.jpg -gravity SouthWest -pointsize 16 
  -stroke '#000C' -strokewidth 4 -annotate +5+5 "G. T. Wang" 
  -stroke none    -fill white    -annotate +5+5 "G. T. Wang" output.jpg

這裡的 -pointsize 參數是指定字型的大小,而文字放置的位置可以用 -gravity 參數來指定,可用的值有:NorthWestNorthNorthEastWestCenterEastSouthWestSouthSouthEast

這是加入文字後的結果:

文字標註

這是另外一種樣式的文字,會將文字背景設定為半透明的黑色:

# 在左下角加入文字(黑色半透明背景)
convert photo.jpg 
  ( -background 'rgba(0, 0, 0, .5)' -fill white 
     -font Helvetica -pointsize 16                
      label:" G. T. Wang " -splice 5x5               
  ) -gravity SouthWest -geometry +0+0 -composite output.jpg

文字標註

這是有陰影的文字:

# 在左下角加入有陰影的文字
convert -size 90x20 xc:none -gravity center -pointsize 16 
  -stroke black -strokewidth 2 -annotate 0 'G. T. Wang' 
  -background none -shadow 100x3+0+0 +repage 
  -stroke none -fill white     -annotate 0 'G. T. Wang' 
  photo.jpg  +swap -gravity SouthWest -geometry +0-3 
  -composite  output.jpg

文字標註

這是讓半透明的文字貼滿整張圖片,產生文字浮水印的效果:

# 文字浮水印
convert -size 240x160 xc:none -fill grey -pointsize 20 
        -gravity NorthWest -draw "text 20,20 'G. T. Wang'" 
        -gravity SouthEast -draw "text 15,25 'G. T. Wang'" 
        miff:- |
  composite -tile - photo.jpg  output.jpg

文字浮水印

圖片浮水印

圖片的浮水印也相當常見,要在照片中加入圖片的浮水印之前,要自己先準備一張浮水印的圖片,這裡我使用 G. T. Wang 網站的 Logo 圖片作為示範。

這行指令是直接將 Logo 縮小後,放在照片的右下角:

# 在右下角加入 80x80 的 Logo
composite -gravity SouthEast ( watermark.png -resize 80x80 ) 
  photo.jpg output.jpg

加入圖片 Logo

這是將 Logo 變成半透明的:

# 在右下角加入半透明的 Logo
composite -gravity SouthEast ( watermark.png -resize 80x80 ) 
  -dissolve 25 photo.jpg output.jpg

其中 -dissolve 的參數值可以指定明度。執行後的效果如下:

加入半透明圖片 Logo

這是在照片的四個角落都加入不同效果的 Logo:

# 四個角落都加入不同效果的 Logo
convert photo.jpg 
  -gravity NorthEast ( watermark.png -resize 80x80 ) -compose Screen -composite 
  -gravity NorthWest ( watermark.png -resize 80x80 ) -compose Bumpmap -composite 
  -gravity SouthEast ( watermark.png -resize 80x80 ) -compose Multiply -composite 
  -gravity SouthWest ( watermark.png -resize 80x80 ) -compose DarkenIntensity -composite 
  output.jpg

不同效果的圖片 Logo

這是大張的圖片浮水印:

# 大張圖片浮水印
composite ( watermark.png -resize 33% ) photo.jpg 
  -compose Bumpmap -gravity Center output.jpg

圖片浮水印

彩色半透明的大張圖片浮水印:

# 彩色大張圖片浮水印
composite ( watermark.png -resize 33% ) photo.jpg 
  -dissolve 25 -gravity Center output.jpg

圖片浮水印

這是將 Logo 縮小後,拼貼在整張照片上:

# 拼貼圖片浮水印
composite -dissolve 25 -tile 
  ( watermark.png -resize 10% ) photo.jpg output.jpg

拼貼圖片浮水印

將 Logo 拼貼在整張照片上可以有效防止盜圖,但是這樣放的滿滿的也不太好看。建議的作法是讓拼貼的密度稀疏一點:

# 圖片浮水印
convert -size 240x220 xc:none -fill white 
  -gravity NorthWest -draw "image Over 40,40,80,80 watermark.png" 
  -gravity NorthWest -draw "image Over 120,120,80,80 watermark.png" 
  miff:- |
  composite -dissolve 25 -tile - photo.jpg  output.jpg

拼貼圖片浮水印

參考資料:ImageMagickImageMagickLinux JournalThe Art of Web

G. T. Wang

個人使用 Linux 經驗長達十餘年,樂於分享各種自由軟體技術與實作文章。

Share
Published by
G. T. Wang
標籤: Bash指令

Recent Posts

光陽 KYMCO GP 125 機車接電發動、更換電瓶記錄

本篇記錄我的光陽 KYMCO ...

2 年 ago

[開箱] YubiKey 5C NFC 實體金鑰

本篇是 YubiKey 5C ...

3 年 ago

[DIY] 自製竹火把

本篇記錄我拿竹子加上過期的苦茶...

3 年 ago