Java图片水印生成器代码 - 批量给自己的网站图片加水印
2016-06-15 23:30
666 查看
Java图片水印生成器代码 - 批量给自己的网站图片加水印
最近在做一款APP,App中的图片是自己一个个的画出来的,为了保证图片不被盗用和处理,所以就需要加上水印防盗。这跟CSDN一样。
注意事项:1. 我是在window7 + eclipse 下完成的
2. eclipse中项目的JRE System Library需要配置为JDK,要不然会提示缺少类库
3. 我之所以用图片水印而不是文字水印,是因为文字水印太麻烦且得不到想要的效果。
4. 用图片水印时,需要将文字改成图片的解决方案是通过网上搜索,搜索在线水印生成就可以了。我推荐这个网站:http://www.qt86.com/changyong.php
需求:将一个文件夹内的所有图片加上水印输出到另外一个文件夹。
设计:开发一个Java类,输入目录地址、输出目录地址、水印文件、水印旋转角度,将一个目录的所有图片加上水印后存储到另外一个目录。
实现:
注意,在点击生成前,请在【背景栏】选择透明背景,字色也应该选一个灰色的,如果一行内容太多就要选择小型字,要不生成的图片中水印文字会自动换行,导致水印文件会很难看。当然,具体的内容还是要自己根据需求调整了。
ruankaods.com的图片水印正式加入到刚才的图片中了。
最近在做一款APP,App中的图片是自己一个个的画出来的,为了保证图片不被盗用和处理,所以就需要加上水印防盗。这跟CSDN一样。
注意事项:1. 我是在window7 + eclipse 下完成的
2. eclipse中项目的JRE System Library需要配置为JDK,要不然会提示缺少类库
3. 我之所以用图片水印而不是文字水印,是因为文字水印太麻烦且得不到想要的效果。
4. 用图片水印时,需要将文字改成图片的解决方案是通过网上搜索,搜索在线水印生成就可以了。我推荐这个网站:http://www.qt86.com/changyong.php
需求:将一个文件夹内的所有图片加上水印输出到另外一个文件夹。
设计:开发一个Java类,输入目录地址、输出目录地址、水印文件、水印旋转角度,将一个目录的所有图片加上水印后存储到另外一个目录。
实现:
一、根据文件内容生成水印文件
登录:http://www.qt86.com 网站,例如输入:软考大师 www.ruankaods.com看看格式,最好能用多排,并错开,这样在合并文件的时候,看到的效果是最好的。注意,在点击生成前,请在【背景栏】选择透明背景,字色也应该选一个灰色的,如果一行内容太多就要选择小型字,要不生成的图片中水印文字会自动换行,导致水印文件会很难看。当然,具体的内容还是要自己根据需求调整了。
二、编写代码,将水印文件与源文件合并,生成带水印的文件。
下面的代码是批量将一个目录中的文件都加水印,如果你只是改一个文件也可以实现。import java.awt.AlphaComposite; import java.awt.Graphics2D; import java.awt.Image; import java.awt.RenderingHints; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileOutputStream; import java.io.OutputStream; import javax.imageio.ImageIO; import javax.swing.ImageIcon; public class ImageWatermark { /** * 给图片添加水印 * @param watermarkFilePath 水印图片路径 * @param srcImagePath 源图片路径 * @param targerImagePath 目标图片路径 * @param degree 水印图片旋转角度 */ public static void addImageWatermark(String watermarkFilePath, String srcImagePath, String targerImagePath, Integer degree) { OutputStream os = null; try { Image srcImage = ImageIO.read(new File(srcImagePath)); BufferedImage graphics = new BufferedImage(srcImage.getWidth(null), srcImage.getHeight(null), BufferedImage.TYPE_INT_RGB); // 得到画布对象 Graphics2D g = graphics.createGraphics(); // 设置对线段的锯齿状边缘处理 g.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR); g.drawImage(srcImage.getScaledInstance(srcImage.getWidth(null), srcImage.getHeight(null), Image.SCALE_SMOOTH), 0, 0, null); if (null != degree) { // 设置水印旋转角度及坐标 g.rotate(Math.toRadians(degree), (double) graphics.getWidth() / 2, (double) graphics.getHeight() / 2); } // 水印图象的路径 (如果需要设置透明度需要gif或者png格式的图片 ) ImageIcon imgIcon = new ImageIcon(watermarkFilePath); // 得到Image对象。 Image image = imgIcon.getImage(); // 透明度 float alpha = 0.25f; g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, alpha)); // 表示水印图片的位置 g.drawImage(image, 20, 30, null); g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER)); g.dispose(); os = new FileOutputStream(targerImagePath); // 生成图片 (可设置 jpg或者png格式) ImageIO.write(graphics, "png", os); } catch (Exception e) { e.printStackTrace(); } finally { try { if (os != null) { os.close(); } } catch (Exception e) { e.printStackTrace(); } } } public static void main(String[] args) { File f = new File("D:\\图片\\全部图片"); File[] p = f.listFiles(); // for(File file : p){ // System.out.println(file.getName()); // } for (File photo : p) { if(!photo.isDirectory()){ ImageWatermark.addImageWatermark("C:/water.png",photo.getPath(),"D:\\图片\\全部图片\\target\\" + photo.getName() , -15); } } System.exit(0); } }
三、效果图
大家可以看到,软考大师ruankaods.com的图片水印正式加入到刚才的图片中了。
相关文章推荐
- java图片加水印文字
- java的图片处理
- 建设一个能承受500万PV/每天的网站如果计算?
- 浅谈从微观角度看访问网站的过程
- 网站运营怎么寻找“种子用户”?
- 网站运营怎么寻找“种子用户”?
- elixir 高可用系列 - 目录
- redhat6.5系统lnmp架构varnish服务
- html在线学习网站
- Win10下IIS配置图解、MVC项目发布图解、IIS添加网站图解
- 腾讯云一键搭建WordPress博客网站
- 网站报502、504错误---lnmp
- 高可用集群HA之双机集群
- 架构师之我见
- 大型网站架构学习笔记
- discuz X论坛技术架构 MVC结构浅析
- 发现一个神奇的网站,微软全系产品下载
- iOS开发常用国外网站清单
- MIPS 架构的 AR9331芯片 编译链相关内容
- 网站发送短信的工具类,验证码、通知消息等