`

java的二维码的生成和解析

阅读更多

一,本文目的: 
   为了研究对支付宝和微信支付的统一路口管理(一张二维码同时支持微信和支付宝扫码支付);本文不将对支付宝和微信的支付开发进行讲解,主要是二维码的生成和解析; 
步骤: 
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类:二维码图片对象 
  

的Java代码  收藏代码
  1.  com.ppfuns.aaa.entity;  
  2.   
  3. import  jp.sourceforge.qrcode.data.QRCodeImage;  
  4.   
  5. import  java.awt.image.BufferedImage;  
  6.   
  7. / ** 
  8.  *创建IntelliJ IDEA。 
  9.  *用户:jony 
  10.  *日期:2017/9/26 
  11.  *时间:9:53 
  12.  *要更改此模板,请使用File | 设置| 文件模板 
  13.  * /  
  14. public class  TwoDimensionCodeImage   实现 QRCodeImage {   
  15.   
  16.   
  17.   
  18.   
  19.         BufferedImage bufImg;  
  20.   
  21.         public  TwoDimensionCodeImage(BufferedImage bufImg){  
  22.             这个.bufImg = bufImg;  
  23.         }  
  24.   
  25.         @覆盖  
  26.         public int  getHeight(){   
  27.             return  bufImg.getHeight();  
  28.         }  
  29.   
  30.         @覆盖  
  31.         public int  getPixel(int  x,  int  y){   
  32.             return  bufImg.getRGB(x,y);  
  33.         }  
  34.   
  35.         @覆盖  
  36.         public int  getWidth(){   
  37.             return  bufImg.getWidth();  
  38.         }  
  39.   
  40. }  
  41.      


   B,CommonUtils类:二维码操作核心类 
 

的Java代码  收藏代码
  1.  com.ppfuns.aaa.common;  
  2.   
  3. import  com.ppfuns.aaa.entity.TwoDimensionCodeImage;  
  4. import  com.swetake.util.Qrcode;  
  5. import  jp.sourceforge.qrcode.QRCodeDecoder;  
  6. import  jp.sourceforge.qrcode.exception.DecodingFailedException;  
  7.   
  8. import  javax.imageio.ImageIO;  
  9. import  java.awt。*;  
  10. import  java.awt.image.BufferedImage;  
  11. import  java.io.File;  
  12. import  java.io.IOException;  
  13. import  java.io.InputStream;  
  14. import  java.io.OutputStream;  
  15.   
  16. / ** 
  17.  *创建IntelliJ IDEA。 
  18.  *用户:简德群 
  19.  *日期:2017/9/26 
  20.  *时间:9:54 
  21.  *要更改此模板,请使用File | 设置| 文件模板 
  22.  * /  
  23. public class  CommonUtils {   
  24.     / ** 
  25.      *生成二维码(QRCode)图片 
  26.      * @param content存储内容 
  27.      * @param imgPath图片路径 
  28.      * /  
  29.     public static void  encoderQRCode(String content,String imgPath){    
  30.         encoderQRCode(content,imgPath,  “png” ,  );  
  31.     }  
  32.   
  33.     / ** 
  34.      *生成二维码(QRCode)图片 
  35.      * @param content存储内容 
  36.      * @param输出输出流 
  37.      * /  
  38.     public static void  encoderQRCode(String content,OutputStream output){    
  39.         encoderQRCode(内容,输出,  “png” ,  );  
  40.     }  
  41.   
  42.     / ** 
  43.      *生成二维码(QRCode)图片 
  44.      * @param content存储内容 
  45.      * @param imgPath图片路径 
  46.      * @param imgType图片类型 
  47.      * /  
  48.     public static void  encoderQRCode(String content,String imgPath,String imgType){    
  49.         encoderQRCode(content,imgPath,imgType,  );  
  50.     }  
  51.   
  52.     / ** 
  53.      *生成二维码(QRCode)图片 
  54.      * @param content存储内容 
  55.      * @param输出输出流 
  56.      * @param imgType图片类型 
  57.      * /  
  58.     public static void  encoderQRCode(String content,OutputStream output,String imgType){    
  59.         encoderQRCode(content,output,imgType,  );  
  60.     }  
  61.   
  62.     / ** 
  63.      *生成二维码(QRCode)图片 
  64.      * @param content存储内容 
  65.      * @param imgPath图片路径 
  66.      * @param imgType图片类型 
  67.      * @param size二维码尺寸 
  68.      * /  
  69.     public static void  encoderQRCode(String content,String imgPath,String imgType,  int  size){    
  70.         尝试 {  
  71.             BufferedImage bufImg = qRCodeCommon(content,imgType,size);  
  72.   
  73.             File imgFile =  new  File(imgPath);  
  74.             //生成二维码QRCode图片  
  75.             ImageIO.write(bufImg,imgType,imgFile);  
  76.         }  catch  (Exception e){  
  77.             e.printStackTrace();  
  78.         }  
  79.     }  
  80.   
  81.     / ** 
  82.      *生成二维码(QRCode)图片 
  83.      * @param content存储内容 
  84.      * @param输出输出流 
  85.      * @param imgType图片类型 
  86.      * @param size二维码尺寸 
  87.      * /  
  88.     public static void  encoderQRCode(String content,OutputStream output,String imgType,  int  size){    
  89.         尝试 {  
  90.             BufferedImage bufImg = qRCodeCommon(content,imgType,size);  
  91.             //生成二维码QRCode图片  
  92.             ImageIO.write(bufImg,imgType,output);  
  93.         }  catch  (Exception e){  
  94.             e.printStackTrace();  
  95.         }  
  96.     }  
  97.   
  98.     / ** 
  99.      *生成二维码(QRCode)图片的公共方法 
  100.      * @param content存储内容 
  101.      * @param imgType图片类型 
  102.      * @param size二维码尺寸 
  103.      * @返回 
  104.      * /  
  105.     private static  BufferedImage qRCodeCommon(String content,String imgType,  int  size){   
  106.         BufferedImage bufImg =  null ;  
  107.         尝试 {  
  108.             Qrcode qrcodeHandler =  new  Qrcode();  
  109.             //设置二维码排错率,可选L(7%),M(15%),Q(25%),H(30%),排错率越高可存储的信息越少,但对二维码清晰度的要求越小  
  110.             qrcodeHandler.setQrcodeErrorCorrect('M' );  
  111.             qrcodeHandler.setQrcodeEncodeMode('B' );  
  112.             //设置设置二维码尺寸,取值范围1-40,值越大尺寸越大,可存储的信息越大  
  113.             qrcodeHandler.setQrcodeVersion(大小);  
  114.             //获得内容的字节数组,设置编码格式  
  115.             byte [] contentBytes = content.getBytes(“utf-8” );  
  116.             //图片尺寸  
  117.             int  imgSize =  67  +  12  *(size-  );  
  118.             bufImg =  new  BufferedImage(imgSize,imgSize,BufferedImage.TYPE_INT_RGB);  
  119.             Graphics2D gs = bufImg.createGraphics();  
  120.             //设置背景颜色  
  121.             gs.setBackground(Color.WHITE);  
  122.             gs.clearRect(,  ,imgSize,imgSize);  
  123.   
  124.             //设定图像颜色>黑色  
  125.             gs.setColor(Color.BLACK);  
  126.             //设置偏移量,不设置可能导致解析出错  
  127.             int  pixoff =  ;  
  128.             //输出内容>二维码  
  129.             if  (contentBytes.length>   && contentBytes.length <  800 ){  
  130.                 boolean [] [] codeOut = qrcodeHandler.calQrcode(contentBytes);  
  131.                 for  (int  i =  ; i <codeOut.length; i ++){  
  132.                     for  (int  j =  ; j <codeOut.length; j ++){  
  133.                         if  (codeOut [j] [i]){  
  134.                             gs.fillRect(j *   + pixoff I *   + pixoff,  ,  );  
  135.                         }  
  136.                     }  
  137.                 }  
  138.             }  else  {  
  139.                 抛出 的异常(“QRCode的内容的字节长度=”  + contentBytes.length +  “不是在[0,800]。” );   
  140.             }  
  141.             gs.dispose();  
  142.             bufImg.flush();  
  143.         }  catch  (Exception e){  
  144.             e.printStackTrace();  
  145.         }  
  146.         返回 bufImg;  
  147.     }  
  148.     / ** 
  149.      *解析二维码(QRCode) 
  150.      * @param imgPath图片路径 
  151.      * @返回 
  152.      * /  
  153.     public static  String decoderQRCode(String imgPath){   
  154.         // QRCode二维码图片的文件  
  155.         文件imageFile =  new  File(imgPath);  
  156.         BufferedImage bufImg =  null ;  
  157.         String content =  null ;  
  158.         尝试 {  
  159.             bufImg = ImageIO.read(imageFile);  
  160.             QRCodeDecoder decoder =  new  QRCodeDecoder();  
  161.             content =  new  String(decode.decode(new  TwoDimensionCodeImage(bufImg)),  “utf-8” );  
  162.         }  catch  (IOException e){  
  163.             System.out.println(“Error:”  + e.getMessage());  
  164.             e.printStackTrace();  
  165.         }  catch  (DecodingFailedException dfe){  
  166.             System.out.println(“Error:”  + dfe.getMessage());  
  167.             dfe.printStackTrace();  
  168.         }  
  169.         返回 内容;  
  170.     }  
  171.     / ** 
  172.      *解析二维码(QRCode) 
  173.      * @param input输入流 
  174.      * @返回 
  175.      * /  
  176.     public  String decoderQRCode(InputStream input){  
  177.         BufferedImage bufImg =  null ;  
  178.         String content =  null ;  
  179.         尝试 {  
  180.             bufImg = ImageIO.read(input);  
  181.             QRCodeDecoder decoder =  new  QRCodeDecoder();  
  182.             content =  new  String(decode.decode(new  TwoDimensionCodeImage(bufImg)),  “utf-8” );  
  183.         }  catch  (IOException e){  
  184.             System.out.println(“Error:”  + e.getMessage());  
  185.             e.printStackTrace();  
  186.         }  catch  (DecodingFailedException dfe){  
  187.             System.out.println(“Error:”  + dfe.getMessage());  
  188.             dfe.printStackTrace();  
  189.         }  
  190.         返回 内容;  
  191.     }  
  192.   
  193.     public static void  main(String [] args){    
  194.         String content =  “https://k.87.re/2014/07/150724ix4.jpg” ;  
  195.         //图片要求是已存在的二维码图片,这里的生成二维码只是对二维码图片中内容的更新  
  196.         encoderQRCode(content,“C:\\ Users \\ lenovo \\ Desktop \\ 121.jpg” );  
  197.         String path =  “C:\\ Users \\ lenovo \\ Desktop \\ 121.jpg” ;  
  198.         String content1 = decodeQRCode(path);  
  199.         的System.out.println(内容1);  
  200. //  
  201.     }  
  202. }  
  203.   
  204.     

 

分享到:
评论

相关推荐

    java二维码生成和解析源码

    Java二维码生成和解析是开发过程中常见的一项功能,它涉及到图像处理和编码解码技术。本文将深入探讨如何在Java环境中实现二维码的生成与解析,并基于提供的源码进行讲解。 首先,二维码(Quick Response Code)是...

    java二维码生成和解析

    java版本,二维码解析和生成代码,亲测成功,并已用于项目开发,集成于springmvc架构。包总含有对应jar包和代码。二维码生成方法是在controller中调用。返回的是二维码保存的路径,二维码保存地址文件夹事先建好,...

    Java二维码生成和解析实现

    以上就是使用Java和ZXing库实现二维码生成与解析的基本步骤。在实际应用中,可能需要根据具体需求进行错误处理、格式调整、定制样式等。源码文件中的内容可能包括了这些更具体的实现细节,可以深入研究以获取更全面...

    Java二维码生成/解析工具

    QRCodeUtils使用文档详见博客https://blog.csdn.net/qq_24091555/article/details/81263472

    基于java的二维码生成与解析demo

    这是一个基于java开发的二维码生成与解析 可以根据程序配置的参数设置生成二维码的图片大小 以及密度 这是一个基于java开发的二维码生成与解析 可以根据程序配置的参数设置生成二维码的图片大小 以及密度 这是一个...

    Java 二维码生成、解析

    Java 二维码生成与解析是Java开发中常见的功能需求,尤其在移动互联网时代,二维码被广泛应用于数据交换、链接跳转、支付凭证等场景。本文将详细介绍如何使用Google的ZXing库来实现Java环境下的二维码生成与解析。 ...

    java二维码生成和添加中间图片

    Java二维码生成技术是一种在软件开发中常用的功能,它允许我们将数据编码成二维图像,以便于快速扫描和读取。Qrcode(二维码)是日本Denso Wave公司发明的一种矩阵式条形码,相比于传统的条形码,它能存储更多的数据...

    Java实现的生成二维码和解析二维码URL操作示例

    Java 实现生成二维码和解析二维码 URL 操作示例 Java 是一种广泛使用的编程语言,具有强大的功能和灵活性。在实际应用中,生成二维码和解析二维码 URL 是非常常见的操作。本文将详细介绍 Java 实现生成二维码和解析...

    java二维码生成与解析代码实现.docx

    以下是一些关于Java二维码生成与解析的关键知识点: 1. **依赖库**: - `QRCode.jar`:这是用于生成和解码二维码的库,它可能包含了`jp.sourceforge.qrcode`和`com.swetake.util.Qrcode`这两个包,这两个包提供了...

    二维码生成和解析

    二维码生成和解析是现代信息化技术中的重要组成部分,尤其在移动互联网和物联网领域中广泛应用。Java作为一门跨平台的编程语言,提供了丰富的库和工具来支持二维码的生成与解析。本篇将详细介绍如何在Java环境中实现...

    java二维码生成及解析(内含QRCode所需jar包)

    二维码生成及解析内涵两个java类原码与QRCode所需的jar包。 《主要是生成二维码图片》 《主要是生成二维码图片》 《主要是生成二维码图片》 《主要是生成二维码图片》 《主要是生成二维码图片》 《主要是生成二维码...

    Java QRCode二维码生成与识别 开源

    总的来说,这个Java QRCode二维码生成与识别开源项目提供了一整套解决方案,从生成包含汉字的二维码到读取和解析二维码图像。开发者可以利用这些工具进行各种应用开发,如移动支付、信息分享、门票验证等。通过深入...

    java二维码生成与解析

    Java二维码生成与解析是Java开发中的一个重要功能,它涉及到数据编码、图像处理和解码算法等多个技术领域。在这个话题中,我们将深入探讨如何在Java环境中创建和读取二维码(Quick Response Code),以及相关的编程...

    java二维码生成与解析实例

    Java语言提供了多种库来支持二维码的生成与解析,其中Zxing(Zebra Crossing)是一个开源项目,专为多种一维条码和二维条码提供读取、生成功能。本文将深入探讨如何在Java中利用Zxing库进行二维码的生成与解析。 ...

    Java 二维码生成与解析包

    Java 二维码生成与解析包,在原有的基础上打包的,易用简单使用方法参照

    Java生成和解析二维码1.2(QRCode)

    本代码为二维码生成和解析的Java实现代码,包括三个类和一个QRCode的jar包(一个jar包用于生成二维码,一个jar包用于读取二维码尤其用于读取的jar包不好下载,所以就一起放进来了,方便大家学习使用),一个生成...

    java二维码生成与解析代码实现代码

    Java二维码生成通常依赖于第三方库,如ZXing(Zebra Crossing)或Java QRCode Library。ZXing是一个开源项目,提供了多种条形码和二维码的读写能力。在Java中使用ZXing,我们需要添加对应的依赖,如果你使用的是...

    java 二维码生成及解析demo

    在IT行业中,二维码作为一种高效的信息编码方式,广泛应用于各种场景,如链接分享、电子票务、产品追溯等。本教程将深入讲解如何使用...通过这个简单的"java 二维码生成及解析demo",你将能够快速上手并掌握相关技术。

    java web 二维码生成与解析实例

    总结来说,这个Java Web二维码生成与解析实例涵盖了Java编程、Web开发、二维码编码解码以及HTTP服务处理等多个技术领域。通过实践这个实例,开发者不仅可以掌握基础的二维码操作,还能深入理解Java Web应用的开发...

    Android版二维码生成,和解析

    在`ecodeTest`这个项目中,你可以找到一个已经实现二维码生成和解析功能的示例,通过运行这个项目,你可以更好地理解和学习如何在Android应用中集成二维码功能。在实际开发中,记得根据项目需求进行适当的优化和调整...

Global site tag (gtag.js) - Google Analytics