zl程序教程

您现在的位置是:首页 >  其他

当前栏目

google zxing 生成和解析二维码

Google 解析 生成 二维码 ZXing
2023-09-14 09:00:23 时间
maven 项目pom.xml文件配置 project xmlns= http://maven.apache.org/POM/4.0.0  xmlns:xsi= http://www.w3.org/2001/XMLSchema-instance   xsi:schemaLocation= http://maven.apache.org/POM/4.0.0 http://maven.a

maven 项目pom.xml文件配置

 project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" 

   modelVersion 4.0.0 /modelVersion 

   groupId com.shihy /groupId 

   artifactId qrcode /artifactId 

   version 0.0.1-SNAPSHOT /version 

   packaging jar /packaging 

   name qrcode /name 

   url http://maven.apache.org /url 

   properties 

     project.build.sourceEncoding UTF-8 /project.build.sourceEncoding 

   /properties 

   dependencies 

      dependency   

             groupId com.google.zxing /groupId   

             artifactId core /artifactId   

             version 3.0.0 /version   

        /dependency   

     

      dependency   

             groupId com.google.zxing /groupId   

             artifactId javase /artifactId   

             version 3.0.0 /version   

        /dependency  

     dependency 

       groupId junit /groupId 

       artifactId junit /artifactId 

       version 4.10 /version 

       scope test /scope 

     /dependency 

      dependency   

             groupId com.alibaba /groupId   

             artifactId fastjson /artifactId   

             version 1.1.29 /version   

         /dependency 

   /dependencies 

 /project 


生成与解析二维码代码

package com.shihy.qrcode;

import java.awt.image.BufferedImage;  

import java.io.File;  

import java.io.IOException;  

import java.nio.file.FileSystems;  

import java.nio.file.Path;  

import java.util.HashMap;  

import java.util.Map;  

import javax.imageio.ImageIO;  

import org.junit.Test;  

import com.alibaba.fastjson.JSONObject;  

import com.google.zxing.BarcodeFormat;  

import com.google.zxing.Binarizer;  

import com.google.zxing.BinaryBitmap;  

import com.google.zxing.DecodeHintType;  

import com.google.zxing.EncodeHintType;  

import com.google.zxing.LuminanceSource;  

import com.google.zxing.MultiFormatReader;  

import com.google.zxing.MultiFormatWriter;  

import com.google.zxing.NotFoundException;  

import com.google.zxing.Result;  

import com.google.zxing.WriterException;  

import com.google.zxing.client.j2se.BufferedImageLuminanceSource;  

import com.google.zxing.client.j2se.MatrixToImageWriter;  

import com.google.zxing.common.BitMatrix;  

import com.google.zxing.common.HybridBinarizer;  

public class QRCodeTest {  

    /** 

     * 生成图像 

     *  

     * @throws WriterException 

     * @throws IOException 

     */  

    @Test  

    public void testEncode() throws WriterException, IOException {  

        String filePath = "D://";  

        String fileName = "zxing.png";  

        JSONObject json = new JSONObject();  

        json.put(  

                "zxing",  

                "https://github.com/zxing/zxing/tree/zxing-3.0.0/javase/src/main/java/com/google/zxing");  

        json.put("author", "shihy");  

        String content = json.toJSONString();// 内容  

        int width = 200; // 图像宽度  

        int height = 200; // 图像高度  

        String format = "png";// 图像类型  

        Map EncodeHintType, Object  hints = new HashMap EncodeHintType, Object   

        hints.put(EncodeHintType.CHARACTER_SET, "utf-8");  

        BitMatrix bitMatrix = new MultiFormatWriter().encode(content,  

                BarcodeFormat.QR_CODE, width, height, hints);// 设置生成什么类型的码,生成矩阵  

        Path path = FileSystems.getDefault().getPath(filePath, fileName);  

        MatrixToImageWriter.writeToPath(bitMatrix, format, path);// 输出图像  

        System.out.println("输出成功.");  

    }  

    /** 

     * 解析图像 

     */  

    @Test  

    public void testDecode() {  

        String filePath = "D://zxing.png";  

        BufferedImage image;  

        try {  

            image = ImageIO.read(new File(filePath));  

            LuminanceSource source = new BufferedImageLuminanceSource(image);  

            Binarizer binarizer = new HybridBinarizer(source);  

            BinaryBitmap binaryBitmap = new BinaryBitmap(binarizer);  

            Map DecodeHintType, Object  hints = new HashMap DecodeHintType, Object   

            hints.put(DecodeHintType.CHARACTER_SET, "utf-8");  

            Result result = new MultiFormatReader().decode(binaryBitmap, hints);// 对图像进行解码  

            //System.out.println(result.getText());

            JSONObject content = JSONObject.parseObject(result.getText());  

            System.out.println("图片中内容:  ");  

            System.out.println("author: " + content.getString("author"));  

            System.out.println("zxing:  " + content.getString("zxing"));  

            System.out.println("图片中格式:  ");  

            System.out.println("encode: " + result.getBarcodeFormat());  

        } catch (IOException e) {  

            e.printStackTrace();  

        } catch (NotFoundException e) {  

            e.printStackTrace();  

        }  

    }  

}


注:

代码中的字符集utf-8必须小写,不能大写,否则生成的二维码无法被其他终端识别,具体原因请参见博文


用Zxing 的core和javase包生成二维码,手机端无法识别,求指导


参考博文:


http://kesun-shy.iteye.com/blog/2154169


 

 

本文出自 “点滴积累” 博客,请务必保留此出处http://tianxingzhe.blog.51cto.com/3390077/1661937


zxing生成二维码和读取二维码 当然,首先要导入zxing的jar包。 生成二维码代码: package com.imooc.zxing; import java.io.File; import java.nio.file.
android 使用开源库zxing生成二维码,扫描二维码【转】 转自:http://blog.csdn.net/qq_16064871/article/details/52422723 zxing是一个开放源码的,用Java实现的多种格式的1D/2D条码图像处理库,它包含了联系到其他语言的接口。