用zxing生成二维码:https://blog.csdn.net/qq_41879385/article/details/81320723
使用jQuery制作带Logo的二维码:https://blog.csdn.net/qq_41879385/article/details/81625354
使用QR Code方式生成二维码:
package com.qrcode;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import com.swetake.util.Qrcode;
/**
*
* @author 谢财盛
* 文件名:QRCode.java
* 时间日期:2018年7月31日下午10:32:57
* 作用:TODO
* 版本号:1.0
*/
public class QRCode {
public static void main(String[] args) throws IOException {
Qrcode x = new Qrcode();
x.setQrcodeErrorCorrect('M'); //纠错等级
x.setQrcodeEncodeMode('B'); //N代表数字,A代表a-Z,B代表其他字符
x.setQrcodeVersion(7); //版本
String qrDate = "SSM框架";
int width= 67+12 * (7-1);
int height= 67+12 * (7-1);
BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Graphics2D gs = bufferedImage.createGraphics();
gs.setBackground(Color.WHITE);
gs.setColor(Color.BLACK);
gs.clearRect(0, 0, width, height);
int pixoff=2; //偏移量
byte[] d = qrDate.getBytes("gb2312");
if(d.length>0 && d.length<120){
boolean[][] s = x.calQrcode(d);
for(int i=0;i<s.length;i++){
for(int j=0;j<s.length;j++){
if(s[j][i]){
gs.fillRect(j*3+pixoff,i*3+pixoff,3,3);
}
}
}
}
gs.dispose();
bufferedImage.flush();
ImageIO.write(bufferedImage, "png", new File("D:/code/img2.png"));
}
}
运行结果:(可以试着扫一下)
下面贴出用QR Code解析二维码:
1.首先是main:
package com.qrcode;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import jp.sourceforge.qrcode.QRCodeDecoder;
/**
*
* @author 谢财盛
* 文件名:ReadQRCode.java
* 时间日期:2018年8月1日下午10:25:20
* 作用:TODO
* 版本号:1.0
*/
public class ReadQRCode {
public static void main(String[] args) throws IOException {
File file = new File("D:/code/img2.png");
BufferedImage bufferedImage = ImageIO.read(file);
QRCodeDecoder codeDecoder = new QRCodeDecoder();
String result = new String(codeDecoder.decode(new QRCodeImage(bufferedImage)),"gb2312");
System.out.println(result);
}
}
2.接下来就需要一个类:
package com.qrcode;
import java.awt.image.BufferedImage;
/**
*
* @author 谢财盛
* 文件名:QRCodeImage.java
* 时间日期:2018年8月1日下午10:38:48
* 作用:TODO
* 版本号:1.0
*/
public class QRCodeImage implements jp.sourceforge.qrcode.data.QRCodeImage {
BufferedImage bufferedImage;
public QRCodeImage(BufferedImage bufferedImage){
this.bufferedImage=bufferedImage;
}
public int getHeight() {
return bufferedImage.getHeight();
}
@Override
public int getPixel(int arg0, int arg1) {
return bufferedImage.getRGB(arg0,arg1);
}
@Override
public int getWidth() {
return bufferedImage.getWidth();
}
}
运行main界面:(结果)
到此,用QR Code生成和解析二维码结束。代码不多,但是重在理解。理解比敲代码有用多了。
推荐以下这两篇文章,非常好,是个很好的学习资料,
二维码的生成细节和原理https://coolshell.cn/articles/10590.html
java——基于zxing的二维码生成器https://www.jianshu.com/p/7ae3b7002530
这两篇都非常的不错,推荐大家去看看,对二维码更深一层的了解。