一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務(wù)器之家 - 編程語(yǔ)言 - JAVA教程 - Java實(shí)現(xiàn)二維碼QRCode的編碼和解碼與示例解析

Java實(shí)現(xiàn)二維碼QRCode的編碼和解碼與示例解析

2020-06-02 11:45人生設(shè)計(jì)師 JAVA教程

本文主要介紹Java實(shí)現(xiàn)二維碼QRCode的編碼和解碼,這里給大家一個(gè)小示例以便理解,有需要的小伙伴可以參考下

Java實(shí)現(xiàn)二維碼QRCode的編碼和解碼

涉及到的一些主要類庫(kù),方便大家下載:

編碼lib:Qrcode_swetake.jar   (官網(wǎng)介紹-- http://www.swetake.com/qr/index-e.html)            

解碼lib:qrcode.jar                 (官網(wǎng)介紹-- http://sourceforge.jp/projects/qrcode/

【一】、編碼:

Java代碼QRCodeEncoderHandler.java

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
package michael.qrcode;
 
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
 
import javax.imageio.ImageIO;
 
import com.swetake.util.Qrcode;
 
/**
 * 二維碼生成器
 * @blog http://sjsky.iteye.com
 * @author Michael
 */
public class QRCodeEncoderHandler {
 
 /**
 * 生成二維碼(QRCode)圖片
 * @param content
 * @param imgPath
 */
 public void encoderQRCode(String content, String imgPath) {
 try {
 
 Qrcode qrcodeHandler = new Qrcode();
 qrcodeHandler.setQrcodeErrorCorrect('M');
 qrcodeHandler.setQrcodeEncodeMode('B');
 qrcodeHandler.setQrcodeVersion(7);
 
 System.out.println(content);
 byte[] contentBytes = content.getBytes("gb2312");
 
 BufferedImage bufImg = new BufferedImage(140, 140,
  BufferedImage.TYPE_INT_RGB);
 
 Graphics2D gs = bufImg.createGraphics();
 
 gs.setBackground(Color.WHITE);
 gs.clearRect(0, 0, 140, 140);
 
 // 設(shè)定圖像顏色> BLACK
 gs.setColor(Color.BLACK);
 
 // 設(shè)置偏移量 不設(shè)置可能導(dǎo)致解析出錯(cuò)
 int pixoff = 2;
 // 輸出內(nèi)容> 二維碼
 if (contentBytes.length > 0 && contentBytes.length < 120) {
 boolean[][] codeOut = qrcodeHandler.calQrcode(contentBytes);
 for (int i = 0; i < codeOut.length; i++) {
  for (int j = 0; j < codeOut.length; j++) {
  if (codeOut[j][i]) {
  gs.fillRect(j * 3 + pixoff, i * 3 + pixoff, 3, 3);
  }
  }
 }
 } else {
 System.err.println("QRCode content bytes length = "
  + contentBytes.length + " not in [ 0,120 ]. ");
 }
 
 gs.dispose();
 bufImg.flush();
 
 File imgFile = new File(imgPath);
 
 // 生成二維碼QRCode圖片
 ImageIO.write(bufImg, "png", imgFile);
 
 } catch (Exception e) {
 e.printStackTrace();
 }
 
 }
 
 /**
 * @param args the command line arguments
 */
 public static void main(String[] args) {
 String imgPath = "D:/test/twocode/Michael_QRCode.png";
 
 String content = "Hello 大大、小小,welcome to QRCode!"
 + "\nMyblog [ http://sjsky.iteye.com ]"
 + "\nEMail [ [email protected] ]" + "\nTwitter [ @suncto ]";
 
 QRCodeEncoderHandler handler = new QRCodeEncoderHandler();
 handler.encoderQRCode(content, imgPath);
 
 System.out.println("encoder QRcode success");
 }
}

運(yùn)行后生成的二維碼圖片如下:

Java實(shí)現(xiàn)二維碼QRCode的編碼和解碼與示例解析

此時(shí)就可用手機(jī)的二維碼掃描軟件(本人用的:android 快拍二維碼 )來(lái)測(cè)試下,識(shí)別成功的截圖如下:

Java實(shí)現(xiàn)二維碼QRCode的編碼和解碼與示例解析

喜歡的朋友可以下載后試一試,做一些名片或者自己喜歡的東西。當(dāng)然Java也可以對(duì)二維碼圖片解碼,具體看下面關(guān)于解碼的內(nèi)容。

【二】、解碼:

Java代碼QRCodeDecoderHandler.java

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
package michael.qrcode;
 
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
 
import javax.imageio.ImageIO;
 
import jp.sourceforge.qrcode.QRCodeDecoder;
import jp.sourceforge.qrcode.data.QRCodeImage;
import jp.sourceforge.qrcode.exception.DecodingFailedException;
 
/**
 * @blog http://sjsky.iteye.com
 * @author Michael
 */
public class QRCodeDecoderHandler {
 
 /**
 * 解碼二維碼
 * @param imgPath
 * @return String
 */
 public String decoderQRCode(String imgPath) {
 
 // QRCode 二維碼圖片的文件
 File imageFile = new File(imgPath);
 
 BufferedImage bufImg = null;
 String decodedData = null;
 try {
 bufImg = ImageIO.read(imageFile);
 
 QRCodeDecoder decoder = new QRCodeDecoder();
 decodedData = new String(decoder.decode(new J2SEImage(bufImg)));
 
 // try {
 // System.out.println(new String(decodedData.getBytes("gb2312"),
 // "gb2312"));
 // } catch (Exception e) {
 // // TODO: handle exception
 // }
 } catch (IOException e) {
 System.out.println("Error: " + e.getMessage());
 e.printStackTrace();
 } catch (DecodingFailedException dfe) {
 System.out.println("Error: " + dfe.getMessage());
 dfe.printStackTrace();
 }
 return decodedData;
 }
 
 /**
 * @param args the command line arguments
 */
 public static void main(String[] args) {
 QRCodeDecoderHandler handler = new QRCodeDecoderHandler();
 String imgPath = "d:/test/twocode/Michael_QRCode.png";
 String decoderContent = handler.decoderQRCode(imgPath);
 System.out.println("解析結(jié)果如下:");
 System.out.println(decoderContent);
 System.out.println("========decoder success!!!");
 }
 
 class J2SEImage implements QRCodeImage {
 BufferedImage bufImg;
 
 public J2SEImage(BufferedImage bufImg) {
 this.bufImg = bufImg;
 }
 
 public int getWidth() {
 return bufImg.getWidth();
 }
 
 public int getHeight() {
 return bufImg.getHeight();
 }
 
 public int getPixel(int x, int y) {
 return bufImg.getRGB(x, y);
 }
 
 }
}

運(yùn)行結(jié)果如下(解碼出的內(nèi)容和之前輸入的內(nèi)容一致 ):

解析結(jié)果如下:

Hello 大大、小小,welcome to QRCode!

Myblog [ http://sjsky.iteye.com ]

EMail [ [email protected] ]

Twitter [ @suncto ]

========decoder success!!!

以上就是對(duì)Java實(shí)現(xiàn)二維碼QRCode的編碼和解碼的資料整理,后續(xù)繼續(xù)補(bǔ)充相關(guān)資料,謝謝大家對(duì)本站的支持!

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 日日插插 | 国产一级真人毛爱做毛片 | 娇小8一12xxxx第一次 | 色天使亚洲综合在线观看 | 久久这里只有精品国产精品99 | 5月色婷婷 | 国产精品对白刺激久久久 | 4hc44四虎永久地址链接 | 欧美日韩中文字幕久久伊人 | 日本大乳护士的引诱图片 | 色综合久久夜色精品国产 | 成人欧美一区在线视频在线观看 | ass性强迫rape | 亚洲精品在线免费看 | 色多多幸福宝 | 黄在线观看www免费看 | 精品一区二区三区视频日产 | 男人狂擦女人的下面视频 | 精品久久久久久国产91 | 卫生间被教官做好爽HH视频 | 男人日女人的b | 视频网站入口在线看 | 日产精品卡一卡2卡三卡乱码工厂 | 欧美色综合高清免费 | 天天澡夜夜澡狠狠澡 | 69成人网| 99re热精品这里精品 | 精品在线免费观看视频 | 咪咪爱网友自拍 | 91精品国产91久久久久久麻豆 | 日本天堂视频在线观看 | 哇嘎在线精品视频在线观看 | 日本韩国在线 | 色综合久久天天综合 | 二次元美女扒开内裤露尿口 | 特级淫片欧美高清视频蜜桃 | 日韩一区二区在线视频 | 私人影院在线免费观看 | 日韩毛片免费线上观看 | 国内亚州视频在线观看 | 4hu影院在线观看 |