首页 > 编程 > Java > 正文

通过java生成读取二维码详解

2019-11-26 08:59:10
字体:
来源:转载
供稿:网友

前言

在开始之前,我们需要先引入二维码生成和读取的jar包,这里我用的是qrcodejar

新建一个Java工程,在工程中添加一个lib目录,把两个Jar包放到lib目录下,不要忘了add as libiary

在build.gradle中添加配置
compile fileTree(dir:'lib',include:['*.jar'])
(这里我用的是gradle)

准备工作结束,马上开始

生成二维码

public class QRcodeTest {public static void main(String[] args) throws Exception{Qrcode qrcode = new Qrcode();qrcode.setQrcodeErrorCorrect('M');//纠错等级(分为L、M、H三个等级)qrcode.setQrcodeEncodeMode('B');//N代表数字,A代表a-Z,B代表其它字符qrcode.setQrcodeVersion(10);//版本//生成二维码中要存储的信息String qrData ="http://www.baidu.com";//设置一下二维码的像素int width = 67+12*(10-1);int height = 67+12*(10-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 = qrData.getBytes("gb2312");if(d.length > 0 && d.length <120){boolean[][] s = qrcode.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("E:/code/qrcodebd.png"));}}

这样就可以生成一张二维码图片,扫描二维码,会跳转到百度首页。

二维码图片

public class MyQrCodeImage implements QRCodeImage {BufferedImage bufferedImage;public MyQrCodeImage(BufferedImage bufferedImage) {this.bufferedImage = bufferedImage;}public int getHeight() {return bufferedImage.getHeight();}public int getPixel(int arg0, int arg1) {return bufferedImage.getRGB(arg0, arg1);}public int getWidth() {return bufferedImage.getWidth();}}

读取二维码

public class ReadQrCode {public static void main(String[] args) throws IOException {File file = new File("E:/code/qrcodebd.png");BufferedImage bufferedImage = ImageIO.read(file);Qrcode qrcode = new Qrcode();QRCodeDecoder codeDecoder = new QRCodeDecoder();String result = new String(codeDecoder.decode(new MyQrCodeImage(bufferedImage)),"gb2312");System.out.println(result);}}

读取二维码的内容为http://www.baidu.com

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持武林网。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表