一,本文目的:
为了研究对支付宝和微信支付的统一路口管理(一张二维码同时支持微信和支付宝扫码支付);本文不将对支付宝和微信的支付开发进行讲解,主要是二维码的生成和解析;
步骤:
1,准备jar包,在java中用到了两个jar包;一个用于生成二维码,一个用户解析二维码;
a,生成二维码jar包路径:http:// www.swetake.com/qr/java/qr_java.html(注意:下载qrcode_java0.50beta10.tar.gz,解压后在lib目录下的qrcode.jar即为用于生成二维码的库)
b,解析二维码jar包路径:http://sourceforge.jp/projects/qrcode/releases/(注意:解压qrcode包后lib目录下的qrcode.jar包,把其重命名,避免与生成二维码jar包冲突即可)
2,java代码
a,TwoDimensionCodeImage类:二维码图片对象
- 包 com.ppfuns.aaa.entity;
- import jp.sourceforge.qrcode.data.QRCodeImage;
- import java.awt.image.BufferedImage;
- / **
- *创建IntelliJ IDEA。
- *用户:jony
- *日期:2017/9/26
- *时间:9:53
- *要更改此模板,请使用File | 设置| 文件模板
- * /
- public class TwoDimensionCodeImage 实现 QRCodeImage {
- BufferedImage bufImg;
- public TwoDimensionCodeImage(BufferedImage bufImg){
- 这个.bufImg = bufImg;
- }
- @覆盖
- public int getHeight(){
- return bufImg.getHeight();
- }
- @覆盖
- public int getPixel(int x, int y){
- return bufImg.getRGB(x,y);
- }
- @覆盖
- public int getWidth(){
- return bufImg.getWidth();
- }
- }
B,CommonUtils类:二维码操作核心类
- 包 com.ppfuns.aaa.common;
- import com.ppfuns.aaa.entity.TwoDimensionCodeImage;
- import com.swetake.util.Qrcode;
- import jp.sourceforge.qrcode.QRCodeDecoder;
- import jp.sourceforge.qrcode.exception.DecodingFailedException;
- import javax.imageio.ImageIO;
- import java.awt。*;
- import java.awt.image.BufferedImage;
- import java.io.File;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.OutputStream;
- / **
- *创建IntelliJ IDEA。
- *用户:简德群
- *日期:2017/9/26
- *时间:9:54
- *要更改此模板,请使用File | 设置| 文件模板
- * /
- public class CommonUtils {
- / **
- *生成二维码(QRCode)图片
- * @param content存储内容
- * @param imgPath图片路径
- * /
- public static void encoderQRCode(String content,String imgPath){
- encoderQRCode(content,imgPath, “png” , 7 );
- }
- / **
- *生成二维码(QRCode)图片
- * @param content存储内容
- * @param输出输出流
- * /
- public static void encoderQRCode(String content,OutputStream output){
- encoderQRCode(内容,输出, “png” , 7 );
- }
- / **
- *生成二维码(QRCode)图片
- * @param content存储内容
- * @param imgPath图片路径
- * @param imgType图片类型
- * /
- public static void encoderQRCode(String content,String imgPath,String imgType){
- encoderQRCode(content,imgPath,imgType, 7 );
- }
- / **
- *生成二维码(QRCode)图片
- * @param content存储内容
- * @param输出输出流
- * @param imgType图片类型
- * /
- public static void encoderQRCode(String content,OutputStream output,String imgType){
- encoderQRCode(content,output,imgType, 7 );
- }
- / **
- *生成二维码(QRCode)图片
- * @param content存储内容
- * @param imgPath图片路径
- * @param imgType图片类型
- * @param size二维码尺寸
- * /
- public static void encoderQRCode(String content,String imgPath,String imgType, int size){
- 尝试 {
- BufferedImage bufImg = qRCodeCommon(content,imgType,size);
- File imgFile = new File(imgPath);
- //生成二维码QRCode图片
- ImageIO.write(bufImg,imgType,imgFile);
- } catch (Exception e){
- e.printStackTrace();
- }
- }
- / **
- *生成二维码(QRCode)图片
- * @param content存储内容
- * @param输出输出流
- * @param imgType图片类型
- * @param size二维码尺寸
- * /
- public static void encoderQRCode(String content,OutputStream output,String imgType, int size){
- 尝试 {
- BufferedImage bufImg = qRCodeCommon(content,imgType,size);
- //生成二维码QRCode图片
- ImageIO.write(bufImg,imgType,output);
- } catch (Exception e){
- e.printStackTrace();
- }
- }
- / **
- *生成二维码(QRCode)图片的公共方法
- * @param content存储内容
- * @param imgType图片类型
- * @param size二维码尺寸
- * @返回
- * /
- private static BufferedImage qRCodeCommon(String content,String imgType, int size){
- BufferedImage bufImg = null ;
- 尝试 {
- Qrcode qrcodeHandler = new Qrcode();
- //设置二维码排错率,可选L(7%),M(15%),Q(25%),H(30%),排错率越高可存储的信息越少,但对二维码清晰度的要求越小
- qrcodeHandler.setQrcodeErrorCorrect('M' );
- qrcodeHandler.setQrcodeEncodeMode('B' );
- //设置设置二维码尺寸,取值范围1-40,值越大尺寸越大,可存储的信息越大
- qrcodeHandler.setQrcodeVersion(大小);
- //获得内容的字节数组,设置编码格式
- byte [] contentBytes = content.getBytes(“utf-8” );
- //图片尺寸
- int imgSize = 67 + 12 *(size- 1 );
- bufImg = new BufferedImage(imgSize,imgSize,BufferedImage.TYPE_INT_RGB);
- Graphics2D gs = bufImg.createGraphics();
- //设置背景颜色
- gs.setBackground(Color.WHITE);
- gs.clearRect(0 , 0 ,imgSize,imgSize);
- //设定图像颜色>黑色
- gs.setColor(Color.BLACK);
- //设置偏移量,不设置可能导致解析出错
- int pixoff = 2 ;
- //输出内容>二维码
- if (contentBytes.length> 0 && contentBytes.length < 800 ){
- 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 {
- 抛出新 的异常(“QRCode的内容的字节长度=” + contentBytes.length + “不是在[0,800]。” );
- }
- gs.dispose();
- bufImg.flush();
- } catch (Exception e){
- e.printStackTrace();
- }
- 返回 bufImg;
- }
- / **
- *解析二维码(QRCode)
- * @param imgPath图片路径
- * @返回
- * /
- public static String decoderQRCode(String imgPath){
- // QRCode二维码图片的文件
- 文件imageFile = new File(imgPath);
- BufferedImage bufImg = null ;
- String content = null ;
- 尝试 {
- bufImg = ImageIO.read(imageFile);
- QRCodeDecoder decoder = new QRCodeDecoder();
- content = new String(decode.decode(new TwoDimensionCodeImage(bufImg)), “utf-8” );
- } catch (IOException e){
- System.out.println(“Error:” + e.getMessage());
- e.printStackTrace();
- } catch (DecodingFailedException dfe){
- System.out.println(“Error:” + dfe.getMessage());
- dfe.printStackTrace();
- }
- 返回 内容;
- }
- / **
- *解析二维码(QRCode)
- * @param input输入流
- * @返回
- * /
- public String decoderQRCode(InputStream input){
- BufferedImage bufImg = null ;
- String content = null ;
- 尝试 {
- bufImg = ImageIO.read(input);
- QRCodeDecoder decoder = new QRCodeDecoder();
- content = new String(decode.decode(new TwoDimensionCodeImage(bufImg)), “utf-8” );
- } catch (IOException e){
- System.out.println(“Error:” + e.getMessage());
- e.printStackTrace();
- } catch (DecodingFailedException dfe){
- System.out.println(“Error:” + dfe.getMessage());
- dfe.printStackTrace();
- }
- 返回 内容;
- }
- public static void main(String [] args){
- String content = “https://k.87.re/2014/07/150724ix4.jpg” ;
- //图片要求是已存在的二维码图片,这里的生成二维码只是对二维码图片中内容的更新
- encoderQRCode(content,“C:\\ Users \\ lenovo \\ Desktop \\ 121.jpg” );
- String path = “C:\\ Users \\ lenovo \\ Desktop \\ 121.jpg” ;
- String content1 = decodeQRCode(path);
- 的System.out.println(内容1);
- //
- }
- }
相关推荐
Java二维码生成和解析是开发过程中常见的一项功能,它涉及到图像处理和编码解码技术。本文将深入探讨如何在Java环境中实现二维码的生成与解析,并基于提供的源码进行讲解。 首先,二维码(Quick Response Code)是...
java版本,二维码解析和生成代码,亲测成功,并已用于项目开发,集成于springmvc架构。包总含有对应jar包和代码。二维码生成方法是在controller中调用。返回的是二维码保存的路径,二维码保存地址文件夹事先建好,...
以上就是使用Java和ZXing库实现二维码生成与解析的基本步骤。在实际应用中,可能需要根据具体需求进行错误处理、格式调整、定制样式等。源码文件中的内容可能包括了这些更具体的实现细节,可以深入研究以获取更全面...
QRCodeUtils使用文档详见博客https://blog.csdn.net/qq_24091555/article/details/81263472
这是一个基于java开发的二维码生成与解析 可以根据程序配置的参数设置生成二维码的图片大小 以及密度 这是一个基于java开发的二维码生成与解析 可以根据程序配置的参数设置生成二维码的图片大小 以及密度 这是一个...
Java 二维码生成与解析是Java开发中常见的功能需求,尤其在移动互联网时代,二维码被广泛应用于数据交换、链接跳转、支付凭证等场景。本文将详细介绍如何使用Google的ZXing库来实现Java环境下的二维码生成与解析。 ...
Java二维码生成技术是一种在软件开发中常用的功能,它允许我们将数据编码成二维图像,以便于快速扫描和读取。Qrcode(二维码)是日本Denso Wave公司发明的一种矩阵式条形码,相比于传统的条形码,它能存储更多的数据...
Java 实现生成二维码和解析二维码 URL 操作示例 Java 是一种广泛使用的编程语言,具有强大的功能和灵活性。在实际应用中,生成二维码和解析二维码 URL 是非常常见的操作。本文将详细介绍 Java 实现生成二维码和解析...
以下是一些关于Java二维码生成与解析的关键知识点: 1. **依赖库**: - `QRCode.jar`:这是用于生成和解码二维码的库,它可能包含了`jp.sourceforge.qrcode`和`com.swetake.util.Qrcode`这两个包,这两个包提供了...
二维码生成和解析是现代信息化技术中的重要组成部分,尤其在移动互联网和物联网领域中广泛应用。Java作为一门跨平台的编程语言,提供了丰富的库和工具来支持二维码的生成与解析。本篇将详细介绍如何在Java环境中实现...
二维码生成及解析内涵两个java类原码与QRCode所需的jar包。 《主要是生成二维码图片》 《主要是生成二维码图片》 《主要是生成二维码图片》 《主要是生成二维码图片》 《主要是生成二维码图片》 《主要是生成二维码...
总的来说,这个Java QRCode二维码生成与识别开源项目提供了一整套解决方案,从生成包含汉字的二维码到读取和解析二维码图像。开发者可以利用这些工具进行各种应用开发,如移动支付、信息分享、门票验证等。通过深入...
Java二维码生成与解析是Java开发中的一个重要功能,它涉及到数据编码、图像处理和解码算法等多个技术领域。在这个话题中,我们将深入探讨如何在Java环境中创建和读取二维码(Quick Response Code),以及相关的编程...
Java语言提供了多种库来支持二维码的生成与解析,其中Zxing(Zebra Crossing)是一个开源项目,专为多种一维条码和二维条码提供读取、生成功能。本文将深入探讨如何在Java中利用Zxing库进行二维码的生成与解析。 ...
Java 二维码生成与解析包,在原有的基础上打包的,易用简单使用方法参照
本代码为二维码生成和解析的Java实现代码,包括三个类和一个QRCode的jar包(一个jar包用于生成二维码,一个jar包用于读取二维码尤其用于读取的jar包不好下载,所以就一起放进来了,方便大家学习使用),一个生成...
Java二维码生成通常依赖于第三方库,如ZXing(Zebra Crossing)或Java QRCode Library。ZXing是一个开源项目,提供了多种条形码和二维码的读写能力。在Java中使用ZXing,我们需要添加对应的依赖,如果你使用的是...
在IT行业中,二维码作为一种高效的信息编码方式,广泛应用于各种场景,如链接分享、电子票务、产品追溯等。本教程将深入讲解如何使用...通过这个简单的"java 二维码生成及解析demo",你将能够快速上手并掌握相关技术。
总结来说,这个Java Web二维码生成与解析实例涵盖了Java编程、Web开发、二维码编码解码以及HTTP服务处理等多个技术领域。通过实践这个实例,开发者不仅可以掌握基础的二维码操作,还能深入理解Java Web应用的开发...
在`ecodeTest`这个项目中,你可以找到一个已经实现二维码生成和解析功能的示例,通过运行这个项目,你可以更好地理解和学习如何在Android应用中集成二维码功能。在实际开发中,记得根据项目需求进行适当的优化和调整...