2017-04-20 43 views
0

我目前使用imagemagick通過命令行將水印放置在另一個圖像上的多個位置,但是我做這件事的方式好像可能不是這樣,最好的方式去做這件事。如何使用ImageMagick在圖像上的多個位置放置水印

下面是我這樣做:

exec("convert 'originalImage.jpg' 'watermark.jpg' -gravity NorthWest -geometry +3+3 -define compose:args=30,100 -compose dissolve -composite 'finalImage.jpg'"); 
exec("convert 'finalImage.jpg' 'watermark.jpg' -gravity NorthEast -geometry +3+3 -define compose:args=30,100 -compose dissolve -composite 'finalImage.jpg'"); 
exec("convert 'finalImage.jpg' 'watermark.jpg' -gravity SouthWest -geometry +3+3 -define compose:args=30,100 -compose dissolve -composite 'finalImage.jpg'"); 

這是(1)取originalImage.jpg並添加watermark.jpg的左上角(從頂部左側的3px保證金,使用30%不透明度),然後(2)將生成的finalImage.jpg圖像添加到右上角,然後(3)再次獲取finalImage.jpg並將水印添加到左下角。

所以它重新創建文件三次以提出最終圖像。有沒有簡單的方法來做同樣的事情,而不必三次分別保存文件?

謝謝!

+0

我的回答或其他人解答了您的問題嗎?如果是這樣,請考慮接受它作爲您的答案 - 通過點擊投票計數旁邊的空心綠色勾號/複選標記。如果沒有,請說出什麼不起作用,以便我或其他人可以進一步幫助您。謝謝。 http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work/5235#5235 –

回答

0

不是在電腦前,所以未經測試,但是這應該是接近:

convert originalImage.jpg \(watermark.jpg -write MPR:wm \) \ 
    -define compose:args=30,100 -compose dissolve   \ 
      -gravity NorthWest -geometry +3+3 -composite  \ 
    MPR:wm -gravity NorthEast -geometry +3+3 -composite  \ 
    MPR:wm -gravity SouthWest -geometry +3+3 -composite finalImage.jpg 

MPR是基於RAM的「Magick永久寄存器」我使用,以避免需要不斷重新閱讀watermark.jpg

compose爭論一直持續到更改,所以我不再重複。可能不需要重複第二個和第三個-geometry

+0

這應該有效,但它可能更簡單,可能更快,只需做一個「轉換」與幾個「-draw image ...」選項。 –

+0

@ GlennRanders-Pehrson,你能舉出一個你提到的方法更完整的例子嗎?謝謝! –

+0

謝謝@MarkSetchell。明天早上我會拍這張照片,讓你知道它是怎麼回事。 –

1

這裏是另一個解決方案使用多個「-draw」選項: 「-draw」沒有「解散」選項,所以你需要提前準備的時間 水印圖像具有30%的α。

convert watermark.jpg -alpha set -channel alpha -fx .30 watermark30.png 
convert originalImage.jpg \ 
    -gravity NorthWest -draw "image over 3,3 0,0 watermark30.png" \ 
    -gravity NorthEast -draw "image over 3,3 0,0 watermark30.png" \ 
    -gravity SouthWest -draw "image over 3,3 0,0 watermark30.png" \ 
    finalImage.jpg 

您可以將此與Mark的良好建議結合使用,以使用MPR格式代替watermark30.png。我做了一些「-draw」與「複合」時間測試,看起來Mark的方法有點快。


我希望你不介意我的編輯您的文章 - 刪除,如果你想 - 但這裏是一個命令會是什麼樣子,做同樣都一氣呵成:

convert watermark.jpg -alpha set -channel alpha -fx .30 -write MPR:wm30 +delete original.jpg \ 
    -gravity NorthWest -draw "image over 3,3 0,0 'MPR:wm30'" \ 
    -gravity NorthEast -draw "image over 3,3 0,0 'MPR:wm30'" \ 
    -gravity SouthWest -draw "image over 3,3 0,0 'MPR:wm30'" \ 
    finalImage.jpg 

enter image description here

相關問題