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(Map params){ 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 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。