可根据自己需求调整水印样式、、、

public class ImageUtil {private static final int INITTOP = 100;private static final int FONDCOLOR = 9999990;private static final String FOND = "微软雅黑";/*** 创建水印图片* @param width* @param height*/public static void createImg(String realname, String policeNo,String idCard, String ip, String sessionId) {int width = 446;   //图片宽度int height = 350;  //图片高度createImg(width, height, realname, policeNo, idCard, ip, sessionId);}/*** 绘制姓名* @param realname*/private static int grapRealname(Graphics g, String realname) {if (realname == null || "".equals(realname)) {return 0;}int top = INITTOP;int left = 80;g.setColor(new Color(FONDCOLOR));g.setFont(new Font(FOND, Font.PLAIN, 20));if (realname.length() == 2) {for (int i = 0; i < realname.length(); i++) {String str = realname.substring(i, i + 1);g.drawString(str, left + 20 * i, top);}left = left + 20 * realname.length();} else if (realname.length() == 3) {for (int i = 0; i < realname.length(); i++) {String str = realname.substring(i, i + 1);g.drawString(str, left + 20 * i, top);}left = left + 20 * realname.length();} else if (realname.length() == 4) {g.setFont(new Font(FOND, Font.PLAIN, 20));for (int i = 0; i < realname.length(); i++) {String str = realname.substring(i, i + 1);g.drawString(str, left + 20 * i, top);}left = left + 20 * realname.length();}return left;}/*** 绘制编号* @param g* @param policeNo*/private static void grapPoliceNo(Graphics g, String policeNo, int toLeft) {if (policeNo == null || "".equals(policeNo)) {return;}int top = INITTOP;int left = 10;g.setColor(new Color(FONDCOLOR));g.setFont(new Font(FOND, Font.PLAIN, 20));// top=top+60;left += toLeft;for (int i = 0; i < policeNo.length(); i++) {String str = policeNo.substring(i, i + 1);g.drawString(str, left + 20 * i, top);}}/*** 绘制身份证* @param g* @param policeNo*/private static void grapIdCard(Graphics g, String idCard) {int top = INITTOP;int left = 15;g.setColor(new Color(FONDCOLOR));g.setFont(new Font(FOND, Font.PLAIN, 20));top = top + 40;for (int i = 0; i < idCard.length(); i++) {String str = idCard.substring(i, i + 1);g.drawString(str, left + 20 * i, top);}}/*** 绘制IP* @param g* @param policeNo*/private static void grapIp(Graphics g, String ip) {int top = INITTOP;int left = 25;g.setColor(new Color(FONDCOLOR));g.setFont(new Font(FOND, Font.PLAIN, 20));top = top + 80;for (int i = 0; i < ip.length(); i++) {String str = ip.substring(i, i + 1);g.drawString(str, left + 20 * i, top);}}/*** 绘制日期* @param g* @param policeNo*/private static void grapDate(Graphics g, String newDate) {int top = INITTOP;int left = 25;g.setColor(new Color(FONDCOLOR));g.setFont(new Font(FOND, Font.PLAIN, 20));top = top + 120;for (int i = 0; i < newDate.length(); i++) {String str = newDate.substring(i, i + 1);g.drawString(str, left + 20 * i, top);}}/*** 创建水印图片* @param width* @param height*/public static void createImg(int width, int height,String realname,String policeNo,String idCard) {width=340;height=300;//首先判断水印图片是否存在SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");String newDate=sdf.format(new Date());//System.out.println("newDate:"+newDate);String newDateStr=newDate.replaceAll("-", "");//System.out.println("newDateStr:"+newDateStr);File file=new File("项目目录"+"/image/shuiyin/"+idCard+"_"+policeNo+"_"+newDateStr+".png");if(file.exists()){return;}BufferedImage image = new BufferedImage(width, height,BufferedImage.TYPE_INT_ARGB);// 获取图形上下文Graphics g = image.getGraphics();// 设定背景色
//      g.setColor(new Color(0xffffff));
//      g.fillRect(0, 0, width, height);// 画边框
//      g.setColor(Color.black);
//      g.drawRect(0, 0, width - 1, height - 1);
//      //写入姓名int toLeft=grapRealname(g, realname);//写入警号grapPoliceNo(g, policeNo,toLeft);//写入日期grapDate(g, newDate);// 释放图形上下文g.dispose();//旋转图片BufferedImage img = new BufferedImage(width, height,BufferedImage.TYPE_INT_ARGB);Graphics g2 = img.getGraphics();// 设定背景色// g2.setColor(new Color(0xffffff));// g2.fillRect(0, 0, width, height);Graphics2D graphics2d;(graphics2d = img.createGraphics()).setRenderingHint(RenderingHints.KEY_INTERPOLATION,RenderingHints.VALUE_INTERPOLATION_BILINEAR);graphics2d.rotate(Math.toRadians(-45), width / 2, height / 2);   //逆时针旋转45度  graphics2d.drawImage(image, 0, 0, null);        graphics2d.dispose();try {// 输出图像到页面ImageIO.write(img, "png",file);} catch (IOException e) {e.printStackTrace();}//System.out.println("ok");}/*** 创建水印图片* * @param width* @param height*/public static void createImg(int width, int height, String realname,String policeNo, String idCard, String ip, String sessionId) {System.out.println(sessionId);width = 440;height = 350;// 首先判断水印图片是否存在SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");String newDate = sdf.format(new Date());File file = new File(Sungoal.getInstance().getSungoalHome()+"/images/shuiyin/"+sessionId + ".jpeg");if (file.exists()) {return;}BufferedImage image = new BufferedImage(width, height,BufferedImage.TYPE_INT_RGB);// 获取图形上下文Graphics g = image.getGraphics();// 设定背景色g.setColor(new Color(0xffffff));g.fillRect(0, 0, width, height);// //写入姓名int toLeft = grapRealname(g, realname);// 写入编号grapPoliceNo(g, policeNo, toLeft);// 写入身份证号grapIdCard(g, idCard);// 写入IPgrapIp(g, ip);// 写入日期grapDate(g, newDate);// 释放图形上下文g.dispose();// 旋转图片BufferedImage img = new BufferedImage(width, height, image.getColorModel().getTransparency());Graphics g2 = img.getGraphics();// 设定背景色g2.setColor(new Color(0xffffff));g2.fillRect(0, 0, width, height);Graphics2D graphics2d;(graphics2d = img.createGraphics()).setRenderingHint(RenderingHints.KEY_INTERPOLATION,RenderingHints.VALUE_INTERPOLATION_BILINEAR);graphics2d.rotate(Math.toRadians(-45), width / 2, height / 2); // 逆时针旋转45度graphics2d.drawImage(image, 0, 0, null);graphics2d.dispose();try {// 输出图像到页面ImageIO.write(img, "JPEG", file);} catch (IOException e) {e.printStackTrace();}}
}

如图水印效果…

Java生成水印图片实例相关推荐

  1. java 生成水印图片工具类, MultipartFile接收上传的图片,处理成加水印之后的MultipartFile

    /*** Created by Administrator on 2018/4/26.* JAVA图片处理工具*/ public class ImageUtil {public enum positi ...

  2. java生成表格图片(请假条为例)

    java生成表格图片(请假条) package table;import java.awt.Color; import java.awt.Font; import java.awt.Graphics; ...

  3. 致敬Gif之父,使用Java生成Gif图片

    点击关注强哥,查看更多精彩文章呀 哈喽,大家好,我是强哥. 据美国媒体报道,美国计算机科学家.GIF图像格式发明人斯蒂芬•威尔海特(Stephen Wilhite)于当地时间3月14日因新冠肺炎去世, ...

  4. android怎么把动图变成视频格式,Android 录制手机屏幕视频生成GIF图片实例详解

    Android 录制手机屏幕视频生成GIF图片实例详解 无图无真相,在我们日常的网络交流中往往需要给交流对象提供直观的显示,而视频是一个很好的方式,但是视频需要播放器,还需要当做文件进行对点传输,并不 ...

  5. java生成水印_[转载]java操作word生成水印

    应用场景 为了保护版权或辨别文件的真伪,有时需要在生成的Word文件中动态添加水印,PageOffice组件的WaterMark类就封装了给在线编辑的Word文件添加水印这一功能,调用接口非常简单. ...

  6. [导入]利用PIL生成水印图片或文字

    最近在做一个图片网站,要处理很多图片,处理图片少不了加水印了,呵呵.PIL用得不熟,在网上找了一圈,加上自己稍微修改了一下,用起来也算方便,生成效果也不错,呵呵,支持透明的png水印图片,透明度和水印 ...

  7. POI以SAX方式解析Excel2007大文件(包含空单元格的处理) Java生成CSV文件实例详解...

    http://blog.csdn.net/l081307114/article/details/46009015 http://www.cnblogs.com/dreammyle/p/5458280. ...

  8. java生成小图片_JAVA生成缩略小图片类

    JAVA生成缩略小图片类 java.awt.image.BufferedImage是缓冲图片类主要将生成的图片对象缓冲起来:javax.imageio.ImageIO是图片IO控制类,可以将缓冲图片对 ...

  9. Java生成随机图片验证码工具类

    一.第一种生成随机图片验证码 public class VerifyCodeUtil {//生成随机数据的数据源 public static final String VERIFY_CODES = & ...

最新文章

  1. php页面在线人数,也谈php网站在线人数统计
  2. 将本地docker镜像推送到阿里云镜像仓库
  3. 命令行开启windows下的iis信息服务,开启及配置http端口,开启及配置ftp端口
  4. 周源:视频加密和DRM实施实践
  5. 【LOJ6363】「地底蔷薇」【点双】【指数型生成函数】【扩展拉格朗日反演】【多项式幂函数】
  6. android条形图,MPAndroid组条形图未显示
  7. Chalubo僵尸网络来袭 IOT设备或将受到DDoS攻击
  8. POJ 3581 Sequence(后缀数组)题解
  9. php 字符转ansi,php 字符编码转换类,支持ANSI、Unicode、Unicode big endian、UTF-8、UTF-8+Bom 互相转换...
  10. servlet到底是什么?
  11. java字符串排序,(不使用sort)
  12. matlab 最小二乘法拟合_最小二乘法与高斯马尔科夫定理(无偏性、有效性)
  13. stupid代码提交到github
  14. MYSQL长时间保持连接
  15. mysql查询专业术语,英语术语MySQL查询
  16. Linux/服务器中文件下载
  17. 机械学习房价预测实战(mse 回归 交叉验证)
  18. RewriteCond %{REQUEST_URI}
  19. 有哪些好用的设备巡检类的软件?
  20. 解决2016版OneNote做代码笔记全流程

热门文章

  1. django 手机验证码获取
  2. 【TestNG】TestNG依赖测试详解
  3. 最高月薪15.5K,成大事不在于力量的大小,而在于能坚持多久~
  4. 直接修改gba_修改GBA游戏本身
  5. 联想计算机 i7,聊聊 联想 小新pro13 i7 10710 低压6核小怪兽
  6. 我参与了《中国地域文化通览·宁夏卷》的编撰工作
  7. 中国人工智能大会报告现场速记-基本情况(一)
  8. 路漫漫其修远兮,吾将上下而求索——《深入浅出MFC》读后感
  9. Django----(四)
  10. 南大通用GBase8s 常用SQL语句(288)