2009-10-21 70 views
4

我正在創建一個網站,要求網站的圖庫中的圖像加水印。當圖像上傳到應用程序時(通過它的網絡界面),我更喜歡在編輯前添加水印,而不是在我們上傳之前手動添加水印。上傳水印圖像

是否有任何簡單的方法(可能是一個圖像庫?),這將允許我這樣做?

我在Grails中構建網站,所以Groovy或Java解決方案將會很棒。

回答

5

這是你想要我認爲代碼...

BufferedImage source = ...; 
BufferedImage watermark = ...; 
Graphics2D g = source.createGraphics(); 
g.drawImage(watermark, x, y, null); 
g.dispose(); 
3

我不確定版權和您的過程是否允許,但另一種建議是在顯示圖像時渲染水印,而不是在上傳時更改圖像。這將允許您更改水印並訪問原始圖像。

+1

好點的水印:不破壞原。但是您不想在每次下載時添加水印,您仍然希望在上載圖像時進行此操作。 – Bombe 2009-10-21 06:59:42

1

我一直在研究Grails應用程序,它執行大量圖像操作,並且選擇致電ImageMagick。 Grails有一個Image Tools插件,可能適合簡單的水印,但是我們需要IM提供的額外功能。

Groovy的Process增加了對IM的調用,然後解析err/out流。如果我有時間我會發佈一個IM插件,但我並不後悔!

歡呼

+0

ImageMagick的+1。我已經評估了多種圖像處理方法,並發現IM是最好的方法(性能,穩定性和質量)。 還有一個Java的包裝庫:http://im4java.sourceforge.net/ – 2009-10-22 09:55:02

+0

這很簡單,所以我寧願避免引入ImageMagick來做一些我可以在<10 LOC中做的事情。但謝謝你的想法。 – 2009-10-23 01:04:47

1

創建一個BufferedImage。將上傳的圖像繪製到BufferedImage上,然後將水印繪製到BufferedImage上。

0

如果您在使用Grails,我想添加水印或調整圖像使用burningimage插件 https://grails.org/plugin/burning-image

最簡單的方法

它非常易於使用,並有據可查。在這裏找到的文檔: https://code.google.com/p/burningimage/

向您簡單的必須做以下

burningImageService.doWith('path/to/my/file', 'path/to/output/dir') 
       .execute { 
        it.watermark('path/to/watermark', ['top':10, 'bottom': 10]) 
       }