package
com.banmacoffee.utils;
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;
import
jp.sourceforge.qrcode.QRCodeDecoder;
import
jp.sourceforge.qrcode.data.QRCodeImage;
import
jp.sourceforge.qrcode.exception.DecodingFailedException;
public
class
QRCodeUtils {
/**
* 编码字符串内容到目标File对象中
* @param encodeddata
* @param destFile
* @throws IOException
*/
public
static
void
qrCodeEncode(String encodeddata,File destFile)
throws
IOException{
Qrcode qrcode =
new
Qrcode();
qrcode.setQrcodeErrorCorrect(
'M'
);
qrcode.setQrcodeEncodeMode(
'B'
);
qrcode.setQrcodeVersion(
7
);
byte
[] d = encodeddata.getBytes(
"GBK"
);
BufferedImage bi =
new
BufferedImage(
139
,
139
, BufferedImage.TYPE_INT_RGB);
Graphics2D g = bi.createGraphics();
g.setBackground(Color.WHITE);
g.clearRect(
0
,
0
,
139
,
139
);
g.setColor(Color.BLACK);
if
(d.length >
0
&& d.length <
123
) {
boolean
[][] b = qrcode.calQrcode(d);
for
(
int
i =
0
; i < b.length; i++) {
for
(
int
j =
0
; j < b.length; j++) {
if
(b[j][i]) {
g.fillRect(j *
3
+
2
, i *
3
+
2
,
3
,
3
);
}
}
}
}
g.dispose();
bi.flush();
ImageIO.write(bi,
"png"
, destFile);
System.out.println(
"Input Encoded data is:"
+encodeddata);
}
/**
* 解析二维码,返回解析内容
* @param imageFile
* @return
*/
public
static
String qrCodeDecode(File imageFile) {
String decodedData =
null
;
QRCodeDecoder decoder =
new
QRCodeDecoder();
BufferedImage image =
null
;
try
{
image = ImageIO.read(imageFile);
}
catch
(IOException e) {
System.out.println(
"Error: "
+ e.getMessage());
}
try
{
decodedData =
new
String(decoder.decode(
new
J2SEImage(image)),
"GBK"
);
System.out.println(
"Output Decoded Data is:"
+decodedData);
}
catch
(DecodingFailedException dfe) {
System.out.println(
"Error: "
+ dfe.getMessage());
}
catch
(UnsupportedEncodingException e) {
e.printStackTrace();
}
return
decodedData;
}
public
static
void
main(String[] args) {
String FilePath =
"C:\\Demo\\QRCode.png"
;
File qrFile =
new
File(FilePath);
String encodeddata =
"{id:10022,name:wandern}"
;
try
{
QRCodeUtils.qrCodeEncode(encodeddata, qrFile);
}
catch
(IOException e) {
e.printStackTrace();
};
String reText = QRCodeUtils.qrCodeDecode(qrFile);
System.out.println(reText);
}
}
class
J2SEImage
implements
QRCodeImage {
BufferedImage image;
public
J2SEImage(BufferedImage image) {
this
.image = image;
}
public
int
getWidth() {
return
image.getWidth();
}
public
int
getHeight() {
return
image.getHeight();
}
public
int
getPixel(
int
x,
int
y) {
return
image.getRGB(x, y);
}
}
相关推荐
java二维码生成与解析源码内含核心包文件QRCode.jar。 二维码的特点: 1. 高密度编码,信息容量大 可容纳多达1850个大写字母或2710个数字或1108个字节,或500多个汉字,比普通条码信息容量约高几十倍。 2. 编码...
该jar包已经集成QRCode的编码包和解码包,下载了可以直接使用! 该jar包已经集成QRCode的编码包和解码包,下载了可以直接使用!
QRCode生成二维码和解析二维码java,整个eclipse项目源文件,编码和解码过程已封装在jar包中。绝对能用……
java实现二维码生成的几个方法,文中分析二维码的生成原理,编码方式及二维码的解析方式。
Java实现生成和解析二维码,非常简单,拿来直接用就行,很方便哦。 二维码又称二维条码,常见的二维码为QR Code,QR全称Quick Response,是一个近几年来移动设备上超流行的一种编码方式,它比传统的Bar Code条形码...
二维码的特点: 1.高密度编码,信息容量大:可容纳多达1850个大写字母或2710个数字或1108个字节,或500多个汉字,比普通条码信息容量约高几十倍。 2.编码范围广:该条码可以把图片、声音、文字、签字、指纹等可以...
使用google开源zxing工具自己整理的二维码编码和解析代码,将logo按比例压缩后添加至彩色二维码中。
Java实现二维码QRCode的编码和解码,二维码生成开发、二维码内容解析开发所需jar包,二维码生成开发。
本文主要介绍Java实现二维码QRCode的编码和解码,这里给大家一个小示例以便理解,有需要的小伙伴可以参考下
1.Java生成二维码示例 2.图片保存到本地或生成Base64编码 3.Base64编码生成图片
二维码创建与解析的demo 包含两种方式 swetake Zxing 该demo可直接运行创建二维码 也可直接解析二维码 两种方式都有demo 在我的帖子:http: blog csdn net wojiao555555 article det
然而,该项目可用于台式机和服务器上的条形码编码和解码以及。我们目前支持以下格式: UPC-A,UPC-E EAN-8,EAN-13 39码 93码 代码128 创新及科技基金 库德巴 RSS-14(所有的变体) RSS扩展(大多数变体) QR码 数据...
ZXing是一个开源Java类库用于解析多种格式的1D/2D条形码。目标是能够对QR编码、Data Matrix、UPC的1D条形码进行解码。 其提供了多种平台下的客户端包括:J2ME、J2SE和Android
一维码用的比较多的编码是CODE39,CDDE128,GTIN-13(EAN13)、GTIN-14(ITF14)、GTIN-8(EAN8)和GTIN-12(UPC)。 2.使用ZXing生成/解析二维码图片 二维码有PDF417、QR Code、Code 49、Code 16K、Code One等。 由于二维码在...
google,最新的二维码,生成zxing-3.2.1.jar.开源Java类库用于解析多种格式的1D/2D条形码。目标是能够对QR编码、Data Matrix、UPC的1D条形码进行解码
该项目已经集成QRCode的编码包和解码包。 可以测试
zxing.java源码解析 ZXing应用详解 现在的项目中需要加上二维码扫描,虽然使用了第三方库,也还好用,但是对这部分只是还是比较感兴趣,所以研究一下。 分类 二维码处理分为两部分:编码与解码 编码:使用字符串生成...
jd-gui提供图形化界面打开java编译的.class后缀文件,将它反编译成java源文件信息,如下图所示
java实现二维码的绘制和解析(zxing by google) 截止目前为止最新版本为1.7,提供以下编码格式的支持: UPC-A and UPC-E EAN-8 and EAN-13 Code 39 Code 93 Code 128 QR Code ITF Codabar RSS-14 (all ...
crossing”)是一个支持多种格式的条形码和二维码图形解析的开源Java类库,同时它也提供了其他语言的接口。 解码时支持格式有:UPC-A、UPC-E、EAN-8、EAN-13、Code 39、Code 93、Code 128、ITF、Codabar、MSI、RSS-...