图片水印工具类java

关于jar包的导入我就不多说了,我会把引入的jar包显示出来,大家自行Google

package com.net.util;import java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.Font;
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.InputStream;
import java.io.OutputStream;import javax.imageio.ImageIO;
import javax.swing.ImageIcon;/******************************************************************************** Description: 图片水印工具类 * @author zhangdi* @version 1.0*/
public class ImageRemarkUtil {// 水印透明度private static float alpha = 0.5f;// 水印横向位置private static int positionWidth = 150;// 水印纵向位置private static int positionHeight = 300;// 水印文字字体private static Font font = new Font("宋体", Font.BOLD, 72);// 水印文字颜色private static Color color = Color.red;/*** * @param alpha*            水印透明度* @param positionWidth*            水印横向位置* @param positionHeight*            水印纵向位置* @param font*            水印文字字体* @param color*            水印文字颜色*/public static void setImageMarkOptions(float alpha, int positionWidth,int positionHeight, Font font, Color color) {if (alpha != 0.0f)ImageRemarkUtil.alpha = alpha;if (positionWidth != 0)ImageRemarkUtil.positionWidth = positionWidth;if (positionHeight != 0)ImageRemarkUtil.positionHeight = positionHeight;if (font != null)ImageRemarkUtil.font = font;if (color != null)ImageRemarkUtil.color = color;}/*** 给图片添加水印图片* * @param iconPath*            水印图片路径* @param srcImgPath*            源图片路径* @param targerPath*            目标图片路径*/public static void markImageByIcon(String iconPath, String srcImgPath,String targerPath) {markImageByIcon(iconPath, srcImgPath, targerPath, null);}/*** 给图片添加水印图片、可设置水印图片旋转角度* * @param iconPath*            水印图片路径* @param srcImgPath*            源图片路径* @param targerPath*            目标图片路径* @param degree*            水印图片旋转角度*/public static void markImageByIcon(String iconPath, String srcImgPath,String targerPath, Integer degree) {OutputStream os = null;try {Image srcImg = ImageIO.read(new File(srcImgPath));BufferedImage buffImg = new  BufferedImage(srcImg.getWidth(null),srcImg.getHeight(null), BufferedImage.TYPE_INT_RGB);// 1、得到画笔对象Graphics2D g = buffImg.createGraphics();// 2、设置对线段的锯齿状边缘处理
            g.setRenderingHint(RenderingHints.KEY_INTERPOLATION,RenderingHints.VALUE_INTERPOLATION_BILINEAR);g.drawImage(srcImg.getScaledInstance(srcImg.getWidth(null),srcImg.getHeight(null), Image.SCALE_SMOOTH), 0, 0,null);// 3、设置水印旋转if (null != degree) {g.rotate(Math.toRadians(degree),(double) buffImg.getWidth() / 2,(double) buffImg.getHeight() / 2);}// 4、水印图片的路径 水印图片一般为gif或者png的,这样可设置透明度ImageIcon imgIcon = new ImageIcon(iconPath);// 5、得到Image对象。Image img = imgIcon.getImage();g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP,alpha));// 6、水印图片的位置g.drawImage(img, positionWidth, positionHeight, null);g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER));// 7、释放资源
            g.dispose();// 8、生成图片os = new FileOutputStream(targerPath);ImageIO.write(buffImg, "JPG", os);System.out.println("图片完成添加水印图片");} catch (Exception e) {e.printStackTrace();} finally {try {if (null != os)os.close();} catch (Exception e) {e.printStackTrace();}}}/*** 给图片添加水印文字* * @param logoText*            水印文字* @param srcImgPath*            源图片路径* @param targerPath*            目标图片路径*/public static void markImageByText(String logoText, String srcImgPath,String targerPath) {markImageByText(logoText, srcImgPath, targerPath, null);}/*** 给图片添加水印文字、可设置水印文字的旋转角度* * @param logoText* @param srcImgPath* @param targerPath* @param degree*/public static void markImageByText(String logoText, String srcImgPath,String targerPath, Integer degree) {InputStream is = null;OutputStream os = null;try {// 1、源图片Image srcImg = ImageIO.read(new File(srcImgPath));BufferedImage buffImg = new BufferedImage(srcImg.getWidth(null),srcImg.getHeight(null), BufferedImage.TYPE_INT_RGB);// 2、得到画笔对象Graphics2D g = buffImg.createGraphics();// 3、设置对线段的锯齿状边缘处理
            g.setRenderingHint(RenderingHints.KEY_INTERPOLATION,RenderingHints.VALUE_INTERPOLATION_BILINEAR);g.drawImage(srcImg.getScaledInstance(srcImg.getWidth(null),srcImg.getHeight(null), Image.SCALE_SMOOTH), 0, 0,null);// 4、设置水印旋转if (null != degree) {g.rotate(Math.toRadians(degree),(double) buffImg.getWidth() / 2,(double) buffImg.getHeight() / 2);}// 5、设置水印文字颜色
            g.setColor(color);// 6、设置水印文字Font
            g.setFont(font);// 7、设置水印文字透明度
            g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP,alpha));// 8、第一参数->设置的内容,后面两个参数->文字在图片上的坐标位置(x,y)
            g.drawString(logoText, positionWidth, positionHeight);// 9、释放资源
            g.dispose();// 10、生成图片os = new FileOutputStream(targerPath);ImageIO.write(buffImg, "JPG", os);System.out.println("图片完成添加水印文字");} catch (Exception e) {e.printStackTrace();} finally {try {if (null != is)is.close();} catch (Exception e) {e.printStackTrace();}try {if (null != os)os.close();} catch (Exception e) {e.printStackTrace();}}}//    public static void main(String[] args) {
//        String srcImgPath = "d:/1.jpg";
//        String logoText = "复 印 无 效";
//        String iconPath = "d:/2.jpg";
//
//        String targerTextPath = "d:/qie_text.jpg";
//        String targerTextPath2 = "d:/qie_text_rotate.jpg";
//
//        String targerIconPath = "d:/qie_icon.jpg";
//        String targerIconPath2 = "d:/qie_icon_rotate.jpg";
//
//        System.out.println("给图片添加水印文字开始...");
//        // 给图片添加水印文字
//        markImageByText(logoText, srcImgPath, targerTextPath);
//        // 给图片添加水印文字,水印文字旋转-45
//        markImageByText(logoText, srcImgPath, targerTextPath2, -45);
//        System.out.println("给图片添加水印文字结束...");
//
//        System.out.println("给图片添加水印图片开始...");
//        setImageMarkOptions(0.3f, 1, 1, null, null);
//        // 给图片添加水印图片
//        markImageByIcon(iconPath, srcImgPath, targerIconPath);
//        // 给图片添加水印图片,水印图片旋转-45
//        markImageByIcon(iconPath, srcImgPath, targerIconPath2, -45);
//        System.out.println("给图片添加水印图片结束...");
//
//    }
}

posted on 2017-04-22 19:42 <&nbsp/> 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/zhangdiIT/p/6748913.html

图片水印工具类java相关推荐

  1. Java实现图片水印工具类

    一 点睛 给图片加水印是一种常见的防伪技术,在此提供一个图片水印工具类. 二 代码 package com.imooc.demo.common.util;import javax.imageio.Im ...

  2. Java 图片添加数字暗水印工具类

    Java 图片添加数字暗水印工具类. package cnki.thesis.common.utils;import org.opencv.core.*;import java.util.ArrayL ...

  3. 文件下载加水印工具类(pdf、word、excel、图片)

    文件加水印实现 支持文件类型 /*** 目前可支持加水印的文件类型*/private static List<String> FILE_TYPE_WATER_LIST = Arrays.a ...

  4. 图片处理工具类 - ImageUtils.java

    纯JAVA实现的图片处理工具类,提供图片的裁剪.压缩.获取尺寸.制作圆角等方法. 源码如下:(点击下载 -ImageUtils.java .FolderUtils.java .commons-io-2 ...

  5. java 图片合成 工具类_Java实现的微信图片处理工具类【裁剪,合并,等比例缩放等】...

    本文实例讲述了Java实现的微信图片处理工具类.分享给大家供大家参考,具体如下: 现在 外面核心,图片文章比较少,看了拷贝代码,而用不了,用相应jar包处理,很多等比例缩放,达不到 想要的给予的期望: ...

  6. java图片处理工具类,很实用哦

    笔者以前在项目里要求处理图片,当时在博客里看到这篇不错的帖子,但是没有看到原作的出处,于是就不客气的转载下来了...同时感谢原创写出这么好的东西. 这个图像工具类可实现以下常用功能:缩放图像.切割图像 ...

  7. java 图片image工具类,ImageUtil.java

    1.java 图片image工具类,ImageUtil.java package com.broadway.numpeople.utils;import java.awt.Color; import ...

  8. Java 上传图片至OSS并返回图片地址工具类可直接用

    OSS上传图片并返回图片地址工具类 OSS上传图片并且返回地址工具类 可以直接拿去用 后续会继续更新 需要注意的点: 下面代码里的@Value里的几个值我是放在application.yml文件里的, ...

  9. Java实现pdf转图片的工具类(三种方法实现PDF转图片的案例)【亲测可用】

    提示:有些时候我们需要在项目中展示PDF,所以我们可以将PDF转为图片,然后已图片的方式展示,效果很好.Java使用各种技术将pdf转换成图片格式,并且内容不失帧.清晰可见,该工具类也是开发中常用到的 ...

  10. java captcha 验证码_验证码图片生成工具类——Captcha.java

    验证码图片生成工具,使用JAVA生成的图片验证码,调用getRandcode方法获取图片验证码,以流的方式传输到前端页面. import java.awt.Color; import java.awt ...

最新文章

  1. 2022-2028年中国汽轮发电机行业市场深度分析及发展趋势分析报告
  2. Activity栈管理(二):Launch Mode
  3. 太阳能工程联箱知识_暖通设计|太阳能热水系统设计参考手册(供参考)
  4. 解决windows版 duet display无法正常连接 【看完就会】
  5. EL表达式 JSTL(详解)
  6. HTML+CSS+JS实现 ❤️swiper倾斜图片特效❤️
  7. C# Winform控件动态删除
  8. 异常值(outlier)
  9. window下的git工具msysgit的使用
  10. IO设备错误,无法运行此项请求,要怎样寻回数据
  11. Python Excel操作人口普查
  12. (便携式投影仪) FP7209补光灯调光芯片无频闪无抖动 LED升压恒流芯片最大驱动300W
  13. 恒生电子java招聘_【恒生电子工资】java开发工程师待遇-看准网
  14. 芥川龙之介《山药粥》
  15. 基础(四)之java后端根据经纬度获取地址
  16. 计算机安全模式win7,安全模式启动,教您Win7怎么进入安全模式
  17. linux系列(七):shell编程、shell概念、ssh协议概念、执行shell文件的三种方式
  18. 文件系统FATFS的移植教程
  19. 这帮死磕技术的理工男造了一支笔
  20. 串口通信与网口通信简介

热门文章

  1. python基础篇——列表与列表算法(下)
  2. windows系统c语言编译环境,在Windows平台搭建C语言开发环境
  3. java http请求_零基础学Java,掌握Java基础难不难?
  4. java 读取 dto_DTO 实现 service 和 controller 之间值传递的操作
  5. macbookpython常见问题_python读取文件常见问题(for macOS)
  6. 文本聚类python fcm_机器学习笔记----Fuzzy c-means(FCM)模糊聚类详解及matlab实现
  7. 四十二、在线预览pdf文件
  8. Bash基础——快捷键
  9. 【踩坑速记】二次依赖?android studio编译运行各种踩坑解决方案,杜绝弯路,总有你想要的~...
  10. MongoDB:Map-Reduce