google的zxing实现二维码生成和解…

二维码的生成与解析。有多种途径。我选择用大品牌,google老大的zxing。

gitHub链接是(我用的3.0.0,已经是nio了)

https://github.com/zxing/zxing/tree/zxing-3.0.0

 

pom.xml 方式的配置文件:


 

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

4.0.0


com.shihy

qrcode

0.0.1-SNAPSHOT

jar


qrcode

http://maven.apache.org


 

UTF-8

 


 

 

com.google.zxing

core

3.0.0

 

 

com.google.zxing

javase

3.0.0

 

 

junit

junit

4.10

 

 

com.alibaba

fastjson

1.1.29

 

 

 



java代码:


 package com.polysaas.edu.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 {


 

@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/;

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

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

int width = 200; // 图像宽度

int height = 200; // 图像高度

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

Map hints = new HashMap();

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 hints = new HashMap();

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

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

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();

}

}

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值