业务中涉及到了在线的健康证预览,但是如果将每个健康证拍照上传预览的话工作量比较高,因此需要通过代码来动态的生成健康证图片,每次预览直接访问图片。

package cn.com.baidu.card.util;import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.*;
import java.util.HashMap;
import java.util.Map;
import javax.imageio.ImageIO;/*** 生成健康证图片* @类 名 : CreateImage* @功能描述 : TODO* @作者信息 : 崔胖子* @创建时间 : 2017-9-10上午12:21:09* @修改备注 :*/
public class CreateImage {/** 模板图片路径 */private static String TEMPLATEPAHT = "";/** 模板印章路径 */private static String TEMPLATEPATHYZ = "";static {// 初始化健康证图片模板路径TEMPLATEPAHT = "D:\\健康证.png";// 初始化健康证图片模板印章路径TEMPLATEPATHYZ = "D:\\健康证章.png";}public static void main(String[] args) {Map<String,Object> map = new HashMap<String,Object>();map.put("age", 25);map.put("no", "20170910001");map.put("name", "崔胖子");map.put("gender", "男");map.put("begin", "2017年9月10日");map.put("project", "小食品");map.put("idCode", "123456789012345678");createImage(map, "D:\\CBC.png");}/*** @Title : createImage* @功能描述 : TODO* @设定文件 : @param map 需要填充的数据集合* @设定文件 : @param path 文件输出的路径+文件名称* @设定文件 : @return* @返回类型 : String 文件路径* @throws :*/public static void createImage(Map<String,Object> map, String path) {try{// 加载模板图片BufferedImage image = ImageIO.read(new File(TEMPLATEPAHT));// 得到图片操作对象Graphics2D graphics = image.createGraphics();//消除文字锯齿graphics.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,RenderingHints.VALUE_TEXT_ANTIALIAS_ON);//消除图片锯齿graphics.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);// 设置文字的颜色为黑色graphics.setColor(Color.black);// 设置文字的字体,大小graphics.setFont(new Font("宋体", Font.BOLD, 60));// 健康证印章File files = new File(TEMPLATEPATHYZ);// 年龄graphics.drawString(map.get("age") == null ? "" : map.get("age").toString(), 1620, 580);// 编号String no =  map.get("no") == null ? "" : map.get("no").toString();graphics.drawString("编号:"+ no, 135, 1130);// 姓名graphics.drawString(map.get("name") == null ? "" : map.get("name").toString(), 1170, 400);// 性别graphics.drawString(map.get("gender") == null ? "" : map.get("gender").toString(), 1170, 580);// 有效期开始时间graphics.drawString(map.get("begin") == null ? "" : map.get("begin").toString(), 1170, 930);// 经营项目graphics.drawString(map.get("project") == null ? "" : map.get("project").toString(), 1170, 750);// 身份证号graphics.drawString(map.get("idCode") == null ? "" : map.get("idCode").toString(), 1170, 1110);// 创建头像地址String paths = map.get("facePhoto") == null ? "D:\\健康证默认头像.png": map.get("facePhoto").toString();File file = new File(paths);// 对头像进行裁剪Image img = thumbnail(file, 500, 690);// 将头像放入模板中graphics.drawImage(img, 130, 130, null);// 对印章进行裁剪Image imgs = thumbnail(files, 895, 639);// 将印章放入模板中graphics.drawImage(imgs, 440, 440, null);// 将健康证图片存储到本地createImage(path, image);}catch (Exception e) {e.printStackTrace();}}/*** 将image对象存储到本地* @Title : createImage* @功能描述 : TODO* @设定文件 : @param fileLocation 本地路径* @设定文件 : @param image 图片对象* @返回类型 : void* @throws :*/private static void createImage(String fileLocation, BufferedImage image) {try {String formatName = fileLocation.substring(fileLocation.lastIndexOf(".") + 1);ImageIO.write(image, formatName , new File(fileLocation));} catch (Exception e) {e.printStackTrace();}}/*** 图片压缩-按照固定宽高原图压缩* @Title : thumbnail* @功能描述 : TODO* @设定文件 : @param img 本地图片地址* @设定文件 : @param width 图片宽度* @设定文件 : @param height 图片高度* @设定文件 : @return* @设定文件 : @throws IOException* @返回类型 : Image* @throws :*/public static Image thumbnail(File img, int width, int height) throws IOException {BufferedImage BI = ImageIO.read(img);Image image = BI.getScaledInstance(width, height, Image.SCALE_SMOOTH);BufferedImage tag = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);Graphics g = tag.getGraphics();g.setColor(Color.RED);g.drawImage(image, 0, 0, null);g.dispose();return image;}}

默认头像样式

健康证底板样式

生成后的效果

Java - 生成健康证图片,各种模板图片相关推荐

  1. Java使用Poi填充Word表格模板(图片和文字)

    Java使用Poi填充Word表格模板(图片和文字) **** 由于个人需求需要对表格模板进行操作,所以本文章只对表格进行替换数据操作,没有段落,没有循环遍历,没有延伸!!!!!(后续补充!!!) * ...

  2. Java 生成各种 PDF 实战方案(图片、模板、表格)

    刚接到了一个需求,生成一个pdf,一开始以为挺简单的,通过模板生成嘛,我也发过相应的文章,根据模板直接生成pdf,响应到前端或者根据模板生成pdf,直接指定下载位置,这两种方案都可以,不过这篇文章主要 ...

  3. JAVA生成微信小程序分享海报图片

    由于小程序里面分享产品,不能直接到朋友圈,因此很多系统的做法是生成一张带有二维码,或者小程序码的海报图片.用户保存到本地,然后分享到朋友圈. 生成海报,有两种方式: 前端小程通过 canvs 绘图到模 ...

  4. java生成二维码(在图片上生成二维码(二维码带logo)并且在图片上添加文字标签)

    1pom.xml <!--生成二维码--> <dependency><groupId>cn.hutool</groupId><artifactId ...

  5. java根据模板生成word 带图,xml模板图片注意标签处理

    循环给word插入图片 <#if image??>       <#list image as bean>       <w:p>         <w:pP ...

  6. Java生成二维码并把图片流导出压缩包下载(亲测可用)

    目录 背景 Maven依赖相关 二维码生成 基础实体类 二维码工具类 控制层代码 结果展示 单个二维码 二维码压缩包 源码地址 背景: 实际开发中有不少二维码生成并下载的需求,单个和批量下载都比较常见 ...

  7. Java 生成一张带文字的图片,并写入Word文档

    今天收到一个需求,要做一个报表的功能. 如果是图表,比如柱状图.折线图.饼图之类的,用jfreechart就可以做到了,但是有些图是纯文字的,这就需要做到将文字放到一张图片中. 搜了很多,总算找到一篇 ...

  8. java 生成 word文档 导出附带图片 已实现

    思路: 利用模板来实现. 第一步:新建一个word,需要替换的内容用${replace}来做标记,图片的话直接将需要附带上的图先贴上去, 第二步: 然后保存为xml类型文件, 然后编辑器打开, 然后将 ...

  9. java生成点阵图_android使用JNI图片转黑白图片实现点阵图(二值化)

    [实例简介] 为android提供的二值化jni库,和完整demo,比Java代码的效率高10s! 一个基于jni的图像处理工具 包括二值化 灰度化 膨胀 腐蚀 等等 是android上图像处理的好例 ...

  10. java生成PDF(图片,模板,表格)

    刚接到了一个需求,生成一个pdf,一开始以为挺简单的,通过模板生成嘛,我也发过相应的文章,根据模板直接生成pdf,响应到前端或者根据模板生成pdf,直接指定下载位置,这两种方案都可以,不过这篇文章主要 ...

最新文章

  1. java调用静态方法原理_传智播客:Java学科08static关键字的概述和使用格式以及静态原理...
  2. 国际人工智能算法与应用研讨会(WASA 2018)参会笔记
  3. 教你玩转CSS 导航栏
  4. 静态代码和动态代码的区别_无代码和低代码有哪些区别
  5. 电脑屏幕变黄如何调整_办公室照明设计如何避免踩坑,四个要点必须注意
  6. 在项目中集成hibernate遇到的问题(4)
  7. Qt5下载安装及环境变量配置详解
  8. 黑苹果驱动 hackintosh
  9. 怎么添加桌面计算机快捷键,怎么添加桌面快捷方式图标,教你怎么添加桌面快捷方式图标...
  10. tomcat连接mysql数据库_tomcat连接常用数据库的用法
  11. 校园网WiFi免认证软件监控
  12. Oracle Primavera P6 文档管理与文件查看(Autovue及Outsidein)
  13. 在github开源代码添加MIT
  14. call()和apply()及bind( )三者的相同与区别
  15. 别低估自己的直觉,也别高估自己的智商
  16. 1 如何在计算机中表示一个词的意思?
  17. 99年毕业设计获优的程序-图书管理程序
  18. 计算机硬盘英语怎么读,硬盘缩写是什么意思
  19. REVIEW of 路由器原理与设计
  20. JavaScript数字进制转换

热门文章

  1. AdminLTE与php,如何使用Vue整合AdminLTE模板
  2. 如何使用idea自带的数据库可视化工具
  3. JAVA时间格式化处理_java时间格式化处理
  4. 标准cpci接口定义_cpci接口定义精简
  5. RESTClient 使用
  6. 向量空间 内积空间 欧氏空间 希尔伯特空间
  7. 计算机视觉论文-2021-09-07
  8. 简单的流媒体服务器(EasyDarwin的安装搭建)
  9. android 查看cad方案,安卓手机可以CAD看图吗?怎么查看接收的CAD图纸文件?
  10. pysnmp snmpwalk