Java图片水印生成器代码 - 批量给自己的网站图片加水印
来源:互联网 发布:网络频段是什么意思 编辑:程序博客网 时间:2024/05/18 00:50
Java图片水印生成器代码 - 批量给自己的网站图片加水印
最近在做一款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给图片加图片水印代码
- java给图片加水印,文字水印
- C#winform批量给图片加水印代码
- 给图片加水印
- 给图片加水印
- 给图片加水印
- 给图片加水印
- 给图片加水印
- 给图片加水印
- 给图片加“水印”
- 给图片加水印
- 给图片加水印
- 给图片加水印
- 给图片加水印
- C#写的给图片加水印的实例代码
- 两个PHP给图片加水印的代码分享
- java给图片加水印和文字
- Linux初学问题(1)
- SecureCRT:[1]SecureCRT配色方案
- POI之PPT文本框生成及样式设置实例
- QT_openCV2.4.9或相关版本编译正常,运行时提示“程序异常结束”问题分析
- Spring中bean的设置
- Java图片水印生成器代码 - 批量给自己的网站图片加水印
- leetcode——Search for a Range
- 这 12 款优秀 App 获得了「App 界的诺贝尔奖」:2016 Apple Design Awards 专题
- 翻译-Manifest.permission
- ASIHTTPRequest的使用—— NSHTTPCookie
- 我为什么要开通博客
- leetcode #98 in cpp
- Git中的fetch和pull
- Linux下coredump文件的查看