IDNO简单生成方法

一、实现方法如下

1、IDCardGenerate.java



public interface IDCardGenerate {
	//public static final String outPath = "D:/gen/idcard.png";
	//public static final String outDir = "D:/gen/";
	//接口的定义,接口里只包含常量和抽象方法.
	public static final String outPath = ".\\idcard.png";//这个是临时文件名
	public static final String outDir = ".\\";
	public static final String outSuf = ".jpg";
	public static final int canvasWidth = 480;
	public static final int canvasHeight = 320;
	public static final int imgWidth = 270;
	public static final int imgHeigth = 428;
	public static final int xStart = 60;
	public static final int yStart = 85;
	public static final int yStep = 32;
	public static final int xStep = 90;
	public static final int charSpace = 10;
	public static final int paramXStart = 110;
	public static final int nationSpace = 140;
	public static final int monthSpace = 120;
	public static final int daySpace = 60;
	public static final int idNoSpace = 80;
	public static final int charLineSpace = 25;
	
	
	public void paint();
}

2、IDCardGeneratorFront .java



import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.geom.RoundRectangle2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;



public class IDCardGeneratorFront implements IDCardGenerate {
	private IDCardInfo idCard = null;
	
	@SuppressWarnings("unused")
	private IDCardGeneratorFront(){
	}
	
	public IDCardGeneratorFront(IDCardInfo idCard) throws Exception{
		if(null == idCard){
			throw new Exception("IDCardinfo object can not be null!");
		}
		this.idCard = idCard;
	}
	
	@Override
	public void paint(){
		BufferedImage bi = new BufferedImage(canvasWidth, canvasHeight, 
				BufferedImage.TYPE_INT_ARGB);//构造一个类型为预定义图像类型之一的 BufferedImage
		
		Graphics2D g2d = getTemplateFront(bi);
		Font font = new Font("华文细黑",Font.BOLD,16);//可不定义
		g2d.setPaint(Color.black);//给写入的个人信息文本设置为黑色
		//g2d.setFont(font);
		int ypStep = 0;
		int xpStep = 0;
		//姓名参数
		g2d.drawString(idCard.getName(), paramXStart, yStart);
		//性别参数
		ypStep = yStart + yStep;
		g2d.drawString(idCard.getSex(), paramXStart, ypStep);
		
		//民族参数
		xpStep = xStart + nationSpace;
		g2d.drawString(idCard.getNation(), xpStep, ypStep);
		
		//出生参数
		//幄1�7
		ypStep += yStep;
		g2d.drawString(idCard.getBornYear(), paramXStart, ypStep);
		//朄1�7
		xpStep = xStart + monthSpace;
		g2d.drawString(idCard.getBornMonth(), xpStep, ypStep);
		//旄1�7
		xpStep += daySpace;
		g2d.drawString(idCard.getBornDay(), xpStep, ypStep);
		
		//住址参数
		ypStep += yStep;
		g2d.drawString(idCard.getAddr1(), paramXStart, ypStep);
		//地址换行处理
		g2d.drawString(idCard.getAddr2(), paramXStart, ypStep + charLineSpace);
		
		
		//身份证号
		ypStep += idNoSpace;
		xpStep = xpStep - daySpace;
		//font = new Font(Font.MONOSPACED,Font.BOLD,20);
		//g2d.setFont(font);
		g2d.drawString(idCard.getIdNo(), xpStep, ypStep + 10);
		
		g2d.dispose();
		try {
			ImageIO.write(bi, "PNG", new File(outPath));// 使用支持给定格式的任意 ImageWriter 将一个图像写入 File
			File imgFile = new File(outPath);//通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。
			String imgName = String.valueOf(System.currentTimeMillis());
			imgFile.renameTo(new File(outDir + imgName + outSuf));//重新命名此抽象路径名表示的文件。
		} catch (IOException e) {
			e.printStackTrace();
		} finally{
			
		} 
		
	}	
	private Graphics2D getTemplateFront(BufferedImage bi) {//该方法是用来获取模板样式
		
		Graphics2D g2d = bi.createGraphics();
		int ypStep = 0;
		int xpStep = 0;
		Font font = new Font("黑体",Font.BOLD,14);
		
		//设置背景艄1�7
	  	g2d.setBackground(Color.white);//白色背景
	  	g2d.clearRect(0, 0, canvasWidth, canvasWidth);
	    //g2d.fillRect(0, 0, canvasWidth, canvasWidth);
	    
	    
	    //绘制圆角矩形
	    g2d.setPaint(Color.black);//矩形边框颜色
		RoundRectangle2D rr = new RoundRectangle2D.Double(30,30,428,270,20,20);//设置圆角
		g2d.draw(rr);//要呈现的轮廓
		
		//姓名
		g2d.setPaint(Color.BLUE);//这是为模板字体设置为蓝色
		//g2d.setFont(font);//调试用的
		//姓名
		g2d.drawString("姓名", xStart, yStart);//首字符的基线位于用户空间的1�7 (x, y) 位置处1�7
		
		ypStep = yStart + yStep;
		//性 别
		g2d.drawString("性 别", xStart, ypStep);
		//pStep += yStep;
		//民 族
		xpStep =xStart + xStep;
		g2d.drawString("民 族",xpStep , ypStep);
		ypStep += yStep;
		//出 生
		g2d.drawString("出 生", xStart, ypStep);
		//ypStep += yStep;
		xpStep = xStart + xStep;
		//年
		g2d.drawString("年", xpStep, ypStep);
		//月
		xpStep += xStart;
		g2d.drawString("月", xpStep, ypStep);
		//日
		xpStep += xStart;
		g2d.drawString("日", xpStep, ypStep);
		//住 址
		ypStep += yStep;
		g2d.drawString("住 址", xStart, ypStep);
		ypStep += idNoSpace;
		//号码
		font = new Font("黑体",Font.PLAIN,16);//这里设置颜色有什么用?
		g2d.setFont(font);
		g2d.drawString("公民身份号码", xStart, ypStep + 10);
		//设置头像
		try {
			//Image img = ImageIO.read(new File("D:/gen/qie2.png"));
			Image img = ImageIO.read(new File(".\\qie2.png"));//返回一个 BufferedImage,作为使用 ImageReader(它是从当前已注册 ImageReader 中自动选择的)解码所提供 File 的结果。
			g2d.drawImage(img, 300,70,null);//  呈现一个图像,在绘制前进行从图像空间到用户空间的转换。
		} catch (IOException e) {	
		}
		
		
		return g2d;
//		g2d.dispose();
//		
//		try {
//			ImageIO.write(bi, "PNG", new File(outPath));
//		} catch (IOException e) {
//			e.printStackTrace();
//		} finally{
//			
//		}  
	}
}

3\IDCardInfo .java



public class IDCardInfo {
	private String name = "";
	private String sex = "";
	private String nation = "";
	private String bornYear = "";
	private String bornMonth = "";
	private String bornDay = "";
	private String addr = "";
	private String idNo = "";
	private String expDate = "";
	private String issuingAuthority = "";
	private String addr1 = "";
	private String addr2 = "";
	
	
	
	public String getAddr1() {
		addr1 = addr.length() > 11 ? 
				addr.substring(0,11) : "";
		return addr1;
	}
	
	public String getAddr2() {
		addr2 = addr.length() > 11 ? 
				addr.substring(11) : "";
		return addr2;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
	public String getNation() {
		return nation;
	}
	public void setNation(String nation) {
		this.nation = nation;
	}
	public String getBornYear() {
		return bornYear;
	}
	public void setBornYear(String bornYear) {
		this.bornYear = bornYear;
	}
	public String getBornMonth() {
		return bornMonth;
	}
	public void setBornMonth(String bornMonth) {
		this.bornMonth = bornMonth;
	}
	public String getBornDay() {
		return bornDay;
	}
	public void setBornDay(String bornDay) {
		this.bornDay = bornDay;
	}
	public String getAddr() {
		return addr;
	}
	public void setAddr(String addr) {
		this.addr = addr;
	}
	public String getIdNo() {
		return idNo;
	}
	public void setIdNo(String idNo) {
		this.idNo = idNo;
	}
	public String getExpDate() {
		return expDate;
	}
	public void setExpDate(String expDate) {
		this.expDate = expDate;
	}
	public String getIssuingAuthority() {
		return issuingAuthority;
	}
	public void setIssuingAuthority(String issuingAuthority) {
		this.issuingAuthority = issuingAuthority;
	}
}

4\TestGenCard .java



public class TestGenCard {
	public static void main(String[] args) {
		IDCardInfo idCard = new IDCardInfo();
		idCard.setName("赵一");
		idCard.setSex("男");
		idCard.setNation("汉");
		idCard.setBornYear("1999");
		idCard.setBornMonth("8");
		idCard.setBornDay("8");
		idCard.setAddr("陕西省渭南市大荔县黄河镇黄家沟二组");
		idCard.setIdNo("622426199908080018");
		try {
			IDCardGeneratorFront idCardFront = new IDCardGeneratorFront(idCard);
			idCardFront.paint();
			System.out.println("complete!!!");
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

猜你喜欢

转载自my.oschina.net/u/3563297/blog/1805603