Java生成水印图片实例
可根据自己需求调整水印样式、、、
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生成水印图片实例相关推荐
- java 生成水印图片工具类, MultipartFile接收上传的图片,处理成加水印之后的MultipartFile
/*** Created by Administrator on 2018/4/26.* JAVA图片处理工具*/ public class ImageUtil {public enum positi ...
- java生成表格图片(请假条为例)
java生成表格图片(请假条) package table;import java.awt.Color; import java.awt.Font; import java.awt.Graphics; ...
- 致敬Gif之父,使用Java生成Gif图片
点击关注强哥,查看更多精彩文章呀 哈喽,大家好,我是强哥. 据美国媒体报道,美国计算机科学家.GIF图像格式发明人斯蒂芬•威尔海特(Stephen Wilhite)于当地时间3月14日因新冠肺炎去世, ...
- android怎么把动图变成视频格式,Android 录制手机屏幕视频生成GIF图片实例详解
Android 录制手机屏幕视频生成GIF图片实例详解 无图无真相,在我们日常的网络交流中往往需要给交流对象提供直观的显示,而视频是一个很好的方式,但是视频需要播放器,还需要当做文件进行对点传输,并不 ...
- java生成水印_[转载]java操作word生成水印
应用场景 为了保护版权或辨别文件的真伪,有时需要在生成的Word文件中动态添加水印,PageOffice组件的WaterMark类就封装了给在线编辑的Word文件添加水印这一功能,调用接口非常简单. ...
- [导入]利用PIL生成水印图片或文字
最近在做一个图片网站,要处理很多图片,处理图片少不了加水印了,呵呵.PIL用得不熟,在网上找了一圈,加上自己稍微修改了一下,用起来也算方便,生成效果也不错,呵呵,支持透明的png水印图片,透明度和水印 ...
- POI以SAX方式解析Excel2007大文件(包含空单元格的处理) Java生成CSV文件实例详解...
http://blog.csdn.net/l081307114/article/details/46009015 http://www.cnblogs.com/dreammyle/p/5458280. ...
- java生成小图片_JAVA生成缩略小图片类
JAVA生成缩略小图片类 java.awt.image.BufferedImage是缓冲图片类主要将生成的图片对象缓冲起来:javax.imageio.ImageIO是图片IO控制类,可以将缓冲图片对 ...
- Java生成随机图片验证码工具类
一.第一种生成随机图片验证码 public class VerifyCodeUtil {//生成随机数据的数据源 public static final String VERIFY_CODES = & ...
最新文章
- php页面在线人数,也谈php网站在线人数统计
- 将本地docker镜像推送到阿里云镜像仓库
- 命令行开启windows下的iis信息服务,开启及配置http端口,开启及配置ftp端口
- 周源:视频加密和DRM实施实践
- 【LOJ6363】「地底蔷薇」【点双】【指数型生成函数】【扩展拉格朗日反演】【多项式幂函数】
- android条形图,MPAndroid组条形图未显示
- Chalubo僵尸网络来袭 IOT设备或将受到DDoS攻击
- POJ 3581 Sequence(后缀数组)题解
- php 字符转ansi,php 字符编码转换类,支持ANSI、Unicode、Unicode big endian、UTF-8、UTF-8+Bom 互相转换...
- servlet到底是什么?
- java字符串排序,(不使用sort)
- matlab 最小二乘法拟合_最小二乘法与高斯马尔科夫定理(无偏性、有效性)
- stupid代码提交到github
- MYSQL长时间保持连接
- mysql查询专业术语,英语术语MySQL查询
- Linux/服务器中文件下载
- 机械学习房价预测实战(mse 回归 交叉验证)
- RewriteCond %{REQUEST_URI}
- 有哪些好用的设备巡检类的软件?
- 解决2016版OneNote做代码笔记全流程