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 二维码生成与解析是Java开发中常见的功能需求,尤其在移动互联网时代,二维码被广泛应用于数据交换、链接跳转、支付凭证等场景。本文将详细介绍如何使用Google的ZXing库来实现Java环境下的二维码生成与解析。 ...
本项目名为“java二维码编码解码测试”,其核心是利用QRCoder这个Java库进行二维码的编码和解码操作。 QRCoder是一个简洁且易于使用的Java库,专门用于创建二维码。它允许开发者将各种类型的数据,如文本、URL、...
首先,我们需要了解二维码编码的过程。编码是将数据转化为二维码图形的过程。在Java中,我们可以使用开源库如`com.google.zxing`(ZXing,意为“Zebra Crossing”),这是一个多格式的开源条码/二维码读写库。要进行...
以下是一些关于Java二维码生成与解析的关键知识点: 1. **依赖库**: - `QRCode.jar`:这是用于生成和解码二维码的库,它可能包含了`jp.sourceforge.qrcode`和`com.swetake.util.Qrcode`这两个包,这两个包提供了...
Java语言提供了多种库来支持二维码的生成与解析,其中Zxing(Zebra Crossing)是一个开源项目,专为多种一维条码和二维条码提供读取、生成功能。本文将深入探讨如何在Java中利用Zxing库进行二维码的生成与解析。 ...
Java二维码生成和解析是开发过程中常见的一项功能,它涉及到图像处理和编码解码技术。本文将深入探讨如何在Java环境中实现二维码的生成与解析,并基于提供的源码进行讲解。 首先,二维码(Quick Response Code)是...
在Java开发中,生成和解析二维码(QR Code)是一项常见的任务,这通常涉及到第三方库的使用。本主题中提到的"java写二维码和解析二维码要用的jar包"指的是使用ZXing(Zebra Crossing)库,这是一个开源的Java项目,...
Java二维码生成技术是一种在软件开发中常用的功能,它允许我们将数据编码成二维图像,以便于快速扫描和读取。Qrcode(二维码)是日本Denso Wave公司发明的一种矩阵式条形码,相比于传统的条形码,它能存储更多的数据...
二维码编码和解析是现代信息化应用中的重要组成部分,尤其是在移动设备上,二维码被广泛用于数据交换、网址跳转、名片分享等场景。ZXing(Zebra Crossing)是一个开源项目,提供了多种条码和二维码的编码与解码功能...
二维码生成和解析是现代信息化技术中的重要组成部分,尤其在移动互联网和物联网领域中广泛应用。Java作为一门跨平台的编程语言,提供...在实际应用中,还需要考虑到错误校验、容错处理以及对不同二维码编码格式的支持。
Java二维码生成与解析是Java开发中的一个重要功能,它涉及到数据编码、图像处理和解码算法等多个技术领域。在这个话题中,我们将深入探讨如何在Java环境中创建和读取二维码(Quick Response Code),以及相关的编程...
总结来说,这个Java Web二维码生成与解析实例涵盖了Java编程、Web开发、二维码编码解码以及HTTP服务处理等多个技术领域。通过实践这个实例,开发者不仅可以掌握基础的二维码操作,还能深入理解Java Web应用的开发...
Java二维码解析和生成库ZXing,全称"Zebra Crossing",是一款强大的开源项目,用于处理一维和二维条形码。ZXing提供了一系列API,让开发者能够方便地在Java应用中实现条形码的读取和生成。该库不仅支持常见的QR码,...
总之,Java实现二维码生成和解析的关键在于选择合适的库(如ZXing),理解二维码编码规则,并利用提供的API进行编码和解码操作。实际应用中,还需要考虑性能优化、错误处理以及用户交互设计等方面,确保功能的稳定性...
本教程将深入讲解如何使用Google的Zxing库在Java环境中生成和解析二维码。 首先,Zxing(读作“zebra crossing”)是一个开源的、多平台的条码解码库,支持多种条码格式,包括QR码。它提供了丰富的API供开发者使用...
Java二维码生成通常依赖于第三方库,如ZXing(Zebra Crossing)或Java QRCode Library。ZXing是一个开源项目,提供了多种条形码和二维码的读写能力。在Java中使用ZXing,我们需要添加对应的依赖,如果你使用的是...
在Java编程环境中,生成和解析二维码(QR Code)是一项常见的任务,特别是在移动应用、网站链接分享、电子票务等领域有着广泛的应用。QR Code是一种二维条形码,可以存储大量信息,如文本、网址、联系人信息等。在这...
总结来说,生成和解析带logo的二维码在Java中可以通过ZXing库实现。这个过程涉及到数据编码、图像处理和解码等多个环节。开发者需要理解二维码的工作原理,熟练掌握ZXing库的使用,以及具备一定的图像处理知识,才能...
Java QRCode二维码生成与识别是Java编程领域中的一个重要技术,主要应用于数据编码和快速信息交换。QRCode(Quick Response Code)是一种二维条码,能够存储大量的文本信息,包括字母、数字、汉字等,并且可以被各种...
在Java开发中,生成二维码(QR Code)和解析二维码是常见的需求,特别是在移动应用、物联网设备通讯、数据分享等领域。为了实现这些功能,开发者通常需要引入特定的库或jar包。这里提到的"java生成二维码和解析...