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的图片水印正式加入到刚才的图片中了。





1 0
原创粉丝点击