文档章节

Zxing二维码的工具 ZxingUtil

独钓渔
 独钓渔
发布于 2017/03/31 18:14
字数 355
阅读 55
收藏 2

 

需要zxing-core和zxing-javase使用的版本是3.3.0

ZxingUtil工具类

package com.imddy.sms.util;

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.HashMap;
import java.util.Hashtable;

import javax.imageio.ImageIO;

import com.google.zxing.BarcodeFormat;
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 ZxingUtil {
	
	
	
	
	@SuppressWarnings("deprecation")
	public static void enQRCode(String contents, int width, int height, String imgPath) {

		HashMap<EncodeHintType, String> hints = new HashMap<EncodeHintType, String>();
		hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");
		try {
			BitMatrix bitMatrix = new MultiFormatWriter().encode(contents, BarcodeFormat.QR_CODE, width, height, hints);
			File imgFile = new File(imgPath);
			MatrixToImageWriter.writeToFile(bitMatrix, "png", imgFile);
			//Path path = new File(imgPath).toPath();
			//Path path = Paths.get(imgPath);
			//MatrixToImageWriter.writeToPath(bitMatrix, "png", path);
		} catch (WriterException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	
	public static String deQRCode(String imgPath) {
		BufferedImage image = null;
		Result result = null;
		
		try {
			image = ImageIO.read(new File(imgPath));
			if (image == null) {
				System.out.println("the QRcode image may be not exit.");
			}
			LuminanceSource source = new BufferedImageLuminanceSource(image);
			BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));
			Hashtable<DecodeHintType, Object> hints = new Hashtable<DecodeHintType, Object>();
			hints.put(DecodeHintType.CHARACTER_SET, "UTF-8");
			result = new MultiFormatReader().decode(bitmap, hints);
			return result.getText();
		} catch (IOException e) {
			e.printStackTrace();
		} catch (NotFoundException e) {
			e.printStackTrace();
		}
		return null;
	}
	
	@SuppressWarnings("deprecation")
	public static void enBarCode(String contents, int width, int height, String imgPath) {
		int codeWidth = 3 + // start guard
				7 * 6 + // left bars
				5 + // middle guard
				7 * 6 + // right bars
				3; // end guard
		codeWidth = Math.max(codeWidth, width);
		BitMatrix bitMatrix = null;
		try {
			bitMatrix = new MultiFormatWriter().encode(contents,BarcodeFormat.CODE_128, codeWidth, height, null);
			File imgFile = new File(imgPath);
			MatrixToImageWriter.writeToFile(bitMatrix, "png", imgFile);
			//Path path = new File(imgPath).toPath();
			//Path path = Paths.get(imgPath);
			//MatrixToImageWriter.writeToPath(bitMatrix, "png", path);
		} catch (WriterException e) {
			System.out.println("invoke encode error.");
		} catch (IOException e) {
			System.out.println("invoke encode error.");
		}
	}
	
	
	public static String deBarCode(String imgPath) {
		BufferedImage image = null;
		Result result = null;
		try {
			image = ImageIO.read(new File(imgPath));
			if (image == null) {
				System.out.println("the barcode image may be not exit.");
			}
			LuminanceSource source = new BufferedImageLuminanceSource(image);
			BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));
			result = new MultiFormatReader().decode(bitmap, null);
			return result.getText();
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}
}

 

© 著作权归作者所有

独钓渔
粉丝 48
博文 401
码字总数 148433
作品 0
沙坪坝
系统管理员
私信 提问
生成二维码的开源工具对比(附源码了呀!)

原文:生成二维码的开源工具对比(附源码了呀!) 某天发现生成二维码的工具(zxing)运行的很慢,于是乎上网上寻找生成二维码的工具,发现常见的开源工具有如下三种: Zxing(zxing.dll) Th...

杰克.陈
2018/07/03
0
0
利用iText和zxing生成和读pdf417二维码

前面的一些博文中已经提到了zxing这个开源工具生成和读取二维码图片,仅从学习的角度来看,可以告一个段落。在实际的生产环境中,应用zxing生成和读取二维码,却存在一些问题: 使用扫描枪读...

彭苏云
2014/03/06
3.2K
0
利用zxing读写PDF417码制的二维码

项目中需要用到二维码,二维码的码制是PDF417,在做了一番研究之后发现zxing是个不错的开源工具(代码托管在google上面)。为什么选择zxing,由于其他一些工具比如barcode4j(开源,支持读,...

彭苏云
2013/12/17
3.2K
1
基于zxing-lib三步实现Android二维码应用

只需要基于开源项目zxing-lib,便可轻松创建独立二维码App,也可将二维码功能集成进App内。本文也是zxing-lib的使用文档。同时抛砖引玉,欢迎大家一起共建zxing-lib。 项目地址:https://git...

yuminw
2014/08/23
2.3K
8
zxing 如何识别反转二维码

说起二维码扫描,估计很多人用的是 zxing 吧。 然而 zxing 虽然好用,但是却有一些坑。 这边分析一下自己实际项目遇到的一个坑。 什么坑呢? 下面举个栗子你就懂了。 这边生成二维码使用的是...

AndroidTraveler
2018/07/23
0
0

没有更多内容

加载失败,请刷新页面

加载更多

医疗在线客服咨询系统有哪些特点?

随着中国互联网网站的的快速发展,至今医疗行业已经拥有了独立的的运营网站,其中最具特色的便属于医疗在线客服咨询系统,医疗在线客服咨询系统为每个访问网站的患者提供即时的网络在线客服服...

唯喏
今天
10
0
skywalking(容器部署)

skywalking(容器部署) 标签(空格分隔): APM [toc] 1. Elasticsearch SkywalkingElasticsearch 5.X(部分功能报错、拓扑图不显示) Skywalking需要Elasticsearch 6.X docker network create......

JUKE
今天
8
0
解决Unable to find a single main class from the following candidates [xxx,xxx]

一、问题描述 1.1 开发环境配置 pom.xml <plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><!--一定要对上springboot版本号,因......

TeddyIH
今天
7
0
玩转Spring Boot 注册Servlet、Filter、Listener

玩转Spring Boot 注册Servlet、Filter、Listener JAVA架构师Ya七月 2019-08-23 玩转Spring Boot 注册Servlet、Filter、Listener 在Servlet 3.0之前我们都是使用web.xml进行配置,需要增加Ser...

Java架构师ya七
今天
5
0
Dubbo服务限制大数据传输抛Data length too large: 13055248, max payload: 8388608解决方案

当dubbo服务提供者向消费层传输大数据容量数据时,会受到Dubbo的限制,报类似如下异常: 2019-08-23 11:04:31.711 [ DubboServerHandler-XX.XX.XX.XXX:20880-thread-87] - [ ERROR ] [com.al...

huangkejie
今天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部