Java 上传图像时的水印

Java 上传图像时的水印,java,grails,image-manipulation,watermark,Java,Grails,Image Manipulation,Watermark,我正在创建一个网站,需要在网站的画廊图像水印。我更喜欢在图像上传到应用程序时(通过其web界面)以编程方式添加水印,而不是在上传之前手动添加水印 有什么简单的方法(也许是一个图像库?)可以让我做到这一点吗 我正在用Grails构建这个站点,所以Groovy或Java解决方案会很好。我不确定版权和您的流程是否允许,但另一个建议是在显示图像时呈现水印,而不是在上传时更改图像。这将允许您更改水印并访问原始图像。我一直在开发一个Grails应用程序,该应用程序执行大量图像操作,我们选择调用ImageMa

我正在创建一个网站,需要在网站的画廊图像水印。我更喜欢在图像上传到应用程序时(通过其web界面)以编程方式添加水印,而不是在上传之前手动添加水印

有什么简单的方法(也许是一个图像库?)可以让我做到这一点吗


我正在用Grails构建这个站点,所以Groovy或Java解决方案会很好。

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

我一直在开发一个Grails应用程序,该应用程序执行大量图像操作,我们选择调用ImageMagick。Grails有一个图像工具插件,它可能适合于简单的水印,但是我们需要IM提供的额外功能

Groovy的进程添加使得调用IM并解析err/out流非常容易。如果我有时间,我会发布一个即时通讯插件,但我不抱歉

干杯


Lee

创建一个缓冲区映像。将上传的图像绘制到BuffereImage,然后将水印绘制到BuffereImage。

这是您想要的代码,我想

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

如果您使用的是grails,我认为添加水印或调整图像大小的最简单方法就是使用burningimage插件

它非常容易使用,并且有很好的文档记录。请在此处查找文档:

要创建水印,您只需执行以下操作

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

好的一点:不要破坏原作。但你不想在每次下载时都添加水印,你仍然希望在上传图像时添加水印。+1表示ImageMagick。我评估了多种图像处理方法,发现IM是最好的(性能、稳定性、质量)。还有一个用于Java的包装器库:它有点简单,所以我宁愿避免使用ImageMagick来做我在<10 LOC中可以做的事情。但是谢谢你的主意。