首先必须的jar包文件:百度云盘下载 Qrcode.jar Qrcode_Swetake.jar 这两个就是我们的主角学习之前可以简单了解一下:二维码原理新建JavaProject 新建lib文件夹将jar文件复制进去,选中jar文件右键B ...
首先必须的jar包文件:百度云盘下载
Qrcode.jar Qrcode_Swetake.jar 这两个就是我们的主角
学习之前可以简单了解一下:二维码原理
新建JavaProject 新建lib文件夹
将jar文件复制进去,选中jar文件右键BuildPath -- Add to BuildPath (旁白:这么简单的操作你都还要讲!)
进入正题:
代码如下: 为方面同学理解 注释较多 请理解 如感不适 请见谅
(旁白:废话太多了 我要看代码!)
生成Qrcode代码:
新建 QrcodeDemo.java
package qrcode;import java.awt.Color;import java.awt.Graphics2D;import java.awt.image.BufferedImage;import java.io.File;import java.io.IOException;import java.io.UnsupportedEncodingException;import javax.imageio.ImageIO;import com.swetake.util.Qrcode;public class QrcodeDemo { public static void main(String[] args) throws UnsupportedEncodingException { Qrcode qrcode=new Qrcode(); //二维码包含:数据和纠错码字:实际保存的二维码信息,和纠错码字(用于修正二维码损坏带来的错误) //格式信息:表示改二维码的纠错级别,分为L、M、Q、H //错误修正容量 //L水平 7%的字码可被修正 //M水平 15%的字码可被修正 //Q水平 25%的字码可被修正 //H水平 30%的字码可被修正 //Qrcode有容错能力,Qrcode图形如果有破损,仍然可以被读取内容,最高可以到30%面积破损仍可被读取。 //相对而言,容错率愈高,Qrcode图形面积愈大。 //所以一般折衷使用15%容错能力 - 'M' qrcode.setQrcodeErrorCorrect('M'); //B 以2进制形式 进行信息存储 qrcode.setQrcodeEncodeMode('B'); //设置Qrcode版本 //QR码符号共有40种规格的矩阵(一般为黑白色) //从21x21(版本1),到177x177(版本40) //每一版本符号比前一版本 每边增加4个模块 //常用版本为7 如支付宝版本 qrcode.setQrcodeVersion(7); //创建图片的存储空间 - 流空间 BufferedImage img=new BufferedImage(140,140,BufferedImage.TYPE_INT_RGB);//常量 8位 颜色的图片 //画笔工具 Graphics2D g=img.createGraphics(); g.setBackground(Color.white); g.clearRect(0, 0, 140, 140); g.setColor(Color.black); File file=new File("/Users/Summer/Desktop/二维码.png"); //数据信息 String str="http://www.baidu.com"; byte[] data =str.getBytes(); //生成的cal boolean[][] qrcodeDate=qrcode.calQrcode(data); // 设置偏移量 不设置可能导致解析出错 int offset=2; for (int i = 0; i < qrcodeDate.length; i++) { for (int j = 0; j < qrcodeDate.length; j++) { /* 必须做判定 判定为true的部分进行打印*/ if(qrcodeDate[j][i]){//注意j i的位置 否则可能导致后续无法解析 //主意j i的位置 防止绘制错误 g.fillRect(j*3+offset,i*3+offset,3,3); /* * 以下尺寸合适,二维码居中 * 100*100 (j*2+5,i*2+5,3,3) * 140*140 (j*3+2,i*3+2,3,3) * 300*300 (j*6+15,i*6+15,6,6); */ } } } //刷新 img.flush(); //释放资源 g.dispose(); try { //流写入文件 ImageIO.write(img,"png",file); } catch (IOException e) { e.printStackTrace(); } }}
原标题:[二维码生成和解析][Java]
关键词:JAVA
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:
admin#shaoqun.com
(#换成@)。