java实现批量生成二维码
本文实例为大家分享了java实现批量生成二维码的具体代码,供大家参考,具体内容如下
packagecom.youge.test;
importjava.awt.Color;
importjava.awt.Graphics2D;
importjava.awt.image.BufferedImage;
importjava.io.File;
importjava.io.IOException;
importjava.io.UnsupportedEncodingException;
importjava.util.HashMap;
importjava.util.Map;
importjavax.imageio.ImageIO;
importorg.springframework.jdbc.core.JdbcTemplate;
importorg.springframework.stereotype.Repository;
importcom.swetake.util.Qrcode;
importcom.youge.util.JdbcDao;
importcom.youge.util.WebUtil;
/**
*批量二维码
*/
publicclassTest{
privateJdbcTemplatejt=JdbcDao.getJdbcTemplate();
publicstaticvoidmain(String[]args)throwsIOException{
Testt=newTest();
for(inti=2018700001;i<2018700003;i++){
Mapmap=newHashMap<>();
Stringq_qrcode=i+"";//http://www.injiaxing.com:8080/youge/mApply/home.shtml?p_qrcode=
Stringp_code=i+"";
map.put("q_qrcode",q_qrcode);
map.put("p_code",p_code);
t.insertQrcode(map);
t.createQrcode(i+"");
}
}
publicintinsertQrcode(Mapparams){
Stringsql="insertintoy_qrcode(q_qrcode,p_code)values(?,?)";
returnjt.update(sql,params.get("q_qrcode"),params.get("p_code"));
}
publicvoidcreateQrcode(Stringstr)throwsIOException{
//计算二维码图片的高宽比
//API文档规定计算图片宽高的方式,v是本次测试的版本号
intv=6;
intwidth=67+12*(v-1);
intheight=67+12*(v-1);
Qrcodex=newQrcode();
/**
*纠错等级分为
*levelL:最大7%的错误能够被纠正;
*levelM:最大15%的错误能够被纠正;
*levelQ:最大25%的错误能够被纠正;
*levelH:最大30%的错误能够被纠正;
*/
x.setQrcodeErrorCorrect('L');
x.setQrcodeEncodeMode('B');//注意版本信息N代表数字、A代表a-z,A-Z、B代表其他)
x.setQrcodeVersion(v);//版本号1-40
StringqrData="http://www.injiaxing.com:8080/youge/mApply/home.shtml?p_qrcode="+str;//内容信息
byte[]d=qrData.getBytes("utf-8");//汉字转格式需要抛出异常
//缓冲区
BufferedImagebufferedImage=newBufferedImage(width,height,BufferedImage.TYPE_INT_BGR);
//绘图
Graphics2Dgs=bufferedImage.createGraphics();
gs.setBackground(Color.WHITE);
gs.setColor(Color.BLACK);
gs.clearRect(0,0,width,height);
//偏移量
intpixoff=2;
/**
*容易踩坑的地方
*1.注意for循环里面的i,j的顺序,
*s[j][i]二维数组的j,i的顺序要与这个方法中的gs.fillRect(j*3+pixoff,i*3+pixoff,3,3);
*顺序匹配,否则会出现解析图片是一串数字
*2.注意此判断if(d.length>0&&d.length<120)
*是否会引起字符串长度大于120导致生成代码不执行,二维码空白
*根据自己的字符串大小来设置此配置
*/
if(d.length>0&&d.length<120){
boolean[][]s=x.calQrcode(d);
for(inti=0;i
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。