上传图片时添加水印

4

我正在创建一个网站,需要对网站的画廊中的图片进行水印处理。我希望在图片通过应用程序(通过其Web界面)上传之前,能够以编程方式添加水印,而不是在上传之前手动添加水印。

是否有任何简单的方法(例如图像库),可以让我完成这个任务?

我正在使用Grails构建网站,因此Groovy或Java解决方案将非常好。

5个回答

5

我想这就是你想要的代码...

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

3

我不确定版权和您的流程是否允许,但另一个建议是在显示图像时呈现水印,而不是在上传时更改图像。这将使您能够更改水印并访问原始图像。


1
好的点子:不要破坏原始文件。但是你不希望在每次下载时都叠加水印,而是只在上传图像时添加水印。 - Bombe

1

我一直在开发一个Grails应用程序,它需要进行大量的图像处理,我们选择调用ImageMagick。虽然Grails有一个Image Tools插件可以用于简单的水印处理,但是我们需要IM提供的额外功能。

Groovy的Process扩展使得调用IM并解析err/out流变得非常容易。如果我有时间,我会发布一个IM插件,但很抱歉我现在没有时间!

谢谢


+1 for ImageMagick。我评估了多种图像处理方法,发现IM是最好的(性能,稳定性,质量)。同时还有一个Java的包装库:http://im4java.sourceforge.net/ - Siegfried Puchbauer
这有点简单,所以我宁愿避免使用ImageMagick来完成我可以在<10行代码中完成的事情。但还是谢谢你的建议。 - Benny Hallett

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])
                }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接