- 浏览: 563610 次
- 性别:
- 来自: 长沙
文章分类
- 全部博客 (145)
- apache-struts (3)
- apache-shiro (4)
- apache-wicket (1)
- spring (34)
- spring-data-jpa (2)
- spring-mvc (20)
- spring-security (1)
- spring-webflow (1)
- hibernate (2)
- mongodb (1)
- ibatis (5)
- mysql (4)
- 开源组件 (18)
- java (3)
- maven (7)
- jBPM (1)
- EJB (1)
- JMS (2)
- servlet / jsp (9)
- javascript / jquery (10)
- 工作技巧 (12)
- ubuntu (6)
- bootstrap (10)
- javaee (1)
- 他山石 (7)
- jetbrick (1)
最新评论
-
yubao2008:
[size=x-small]为什么我也这样试了, 就是没有生效 ...
javax.servlet.http.HttpServletResponse 得到 status_code -
chenrl:
...
SpringMVC杂记(十五) spring-mvc controller 的切面 -
LONGTENGLONG:
你好,这样配置的,得到的集合为空,是什么原因?
apache-shiro杂记(一) 统计在线用户数目 -
xiafengfeiwu:
[flash=200,200][url]引用[/url][/f ...
apache-shiro 学习笔记 -
3108493554:
你好 ,有些问题想请教下,加下我qq310849354,你这上 ...
SpringMVC杂记(十二) 自定义Interceptor从Active Directory得到域信息
二维条形码的生成与解析
参考文章
参考文章
<dependency> <groupId>com.google.zxing</groupId> <artifactId>core</artifactId> <version>1.7</version> </dependency> <dependency> <groupId>com.google.zxing</groupId> <artifactId>javase</artifactId> <version>1.7</version> </dependency>
package util.qrcode; import java.awt.image.BufferedImage; import java.io.Closeable; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.URL; import java.util.Hashtable; import java.util.List; import javax.imageio.ImageIO; import com.google.zxing.BarcodeFormat; import com.google.zxing.BinaryBitmap; 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; import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel; public class QRCodeUtils { /** 私有构造方法 */ private QRCodeUtils() { super(); } private static final Hashtable<EncodeHintType, Object> ZXING_HINTS; static { ZXING_HINTS = new Hashtable<EncodeHintType, Object>(); ZXING_HINTS.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H); ZXING_HINTS.put(EncodeHintType.CHARACTER_SET, "UTF-8"); } /** * 将二维码写入数据流 * * @param out 数据流 * @param lines 数据 * @param width 二维码宽度 * @param height 二维码高度 */ public static void writeToOutputStream(OutputStream out, List<String> lines, int width, int height) { StringBuilder sb = new StringBuilder(); for (int i = 0; i < lines.size(); i ++) { sb.append(lines.get(i)); if (i != lines.size() - 1) { sb.append("\n"); } } writeToOutputStream(out, sb.toString(), width, height); } /** * 将二维码写入数据流 * * @param out 数据流 * @param contents 数据 * @param width 二维码宽度 * @param height 二维码高度 */ public static void writeToOutputStream(OutputStream out, String contents, int width, int height) { try { BitMatrix bitMatrix = new MultiFormatWriter().encode(contents, BarcodeFormat.QR_CODE, width, height, ZXING_HINTS); MatrixToImageWriter.writeToStream(bitMatrix, "png", out); } catch (WriterException e) { throw new RuntimeException(e.getMessage(), e); } catch (IOException e) { throw new RuntimeException(e.getMessage(), e); } } /** * 将二维码写入文件 * * @param file 文件 * @param lines 数据 * @param width 二维码宽度 * @param height 二维码高度 */ public static void writeToFile(File file, List<String> lines, int width, int height) { StringBuilder sb = new StringBuilder(); for (int i = 0; i < lines.size(); i ++) { sb.append(lines.get(i)); if (i != lines.size() - 1) { sb.append("\n"); } } writeToFile(file, sb.toString(), width, height); } /** * 将二维码写入文件 * * @param file 文件 * @param contents 数据 * @param width 二维码宽度 * @param height 二维码高度 */ public static void writeToFile(File file, String contents, int width, int height) { try { BitMatrix bitMatrix = new MultiFormatWriter().encode(contents, BarcodeFormat.QR_CODE, width, height, ZXING_HINTS); MatrixToImageWriter.writeToFile(bitMatrix, "png", file); } catch (WriterException e) { throw new RuntimeException(e.getMessage(), e); } catch (IOException e) { throw new RuntimeException(e.getMessage(), e); } } /** * 解析二维码 * * @param image 图片 * @return 信息 */ public static String decode(BufferedImage image) { Result result = null; LuminanceSource source = new BufferedImageLuminanceSource(image); BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source)); try { result = new MultiFormatReader().decode(bitmap, ZXING_HINTS); } catch (NotFoundException e) { throw new RuntimeException(e.getMessage(), e); } return result.getText(); } /** * 解析二维码 * * @param file 图片 * @return 信息 */ public static String decode(File file) { BufferedImage image = null; try { image = ImageIO.read(file); } catch (IOException e) { throw new RuntimeException(e.getMessage(), e); } return decode(image); } /** * 解析二维码 * * @param input 图片 * @return 信息 */ public static String decode(InputStream input) { BufferedImage image = null; try { image = ImageIO.read(input); } catch (IOException e) { throw new RuntimeException(e.getMessage(), e); } return decode(image); } /** * 解析二维码 * * @param url 图片 * @return 信息 */ public static String decode(URL url) { BufferedImage image = null; try { image = ImageIO.read(url); } catch (IOException e) { throw new RuntimeException(e.getMessage(), e); } return decode(image); } /** * 关闭 * * @param closeable 关闭对象 */ public static void closeQuietly(Closeable closeable) { if (closeable == null) return; try { closeable.close(); } catch (Exception e) {} } }
发表评论
-
扩展logback DBAppender
2013-07-30 15:07 10356一) logback已经提供了一个DBAppender(ch. ... -
Java生成缩略图之Thumbnailator(转载)
2013-07-15 21:19 2766Java生成缩略图之Thumbnailator(转载) 原文 ... -
pinyin4j 的应用
2013-05-12 08:59 1283<!-- pinyin4j --> < ... -
memcached学习笔记(二) 使用memcached java客户端
2012-07-11 11:51 14441) 了解了一下 memcached 客户端常见的有两种 sp ... -
memcached学习笔记(一) instanll memcached on windows machine
2012-07-11 10:44 16141) 下载 http://code.jellycan.com/ ... -
Zip 压缩和解压缩
2011-12-31 14:17 1699要依赖 ant.1.7.0.jar <depend ... -
Log4j RollingFileAppender和DailyRollingFileAppender杂交
2011-12-16 15:13 3913package org.apache.log4j; ... -
BoneCP
2011-11-07 10:39 27361) BoneCP加入工程 <dependency& ... -
Quartz 任务调度器
2011-05-04 15:33 1857字段允许值允许的特殊 ... -
commons-email笔记
2011-04-15 11:59 1674使用Apache Commons-email发送电子邮件 所 ... -
commons-digest笔记
2011-04-12 11:09 1435本文为转载且为截取的片段,如有需要请访问原帖 待解析的xml ... -
json-taglib
2011-03-29 14:53 1794JSON-taglib是一套JSP标签库用于在JSP代码中输出 ... -
JSR-303
2011-03-21 15:45 12064JSR-303 是JAVA EE 6 中的一项子规范,叫做Be ... -
JUnit如何使用
2011-02-17 13:34 4811一,Junit4是Junit框架有 ... -
Apache-dom4j的使用(二)
2011-02-11 15:57 2055本小节讲如何使用dom4j解析一个xml文件 以读取book ... -
Apache-dom4j的使用(一)
2011-02-11 14:15 1363本节主要介绍如何用dom4j生成一个xml文档 <? ... -
log4j的xml配置方式
2011-01-15 07:33 1621一,原来一贯用的properties配置文件 log4j.pr ...
相关推荐
VB源码-图形处理的标签,说明了这个项目与图像处理有关,特别是涉及到生成和可能的显示或打印二维条形码。Visual Basic 提供了丰富的图形库和API,允许开发者创建图形界面并处理图像,包括生成条形码。在这个工具中...
公文二维条码生成器是一种专门针对公文处理的软件工具,它能够为各类公文快速生成二维条码。在信息化办公的今天,二维条码技术已经广泛应用在文档管理、流转跟踪、信息加密等多个环节,提高了公文处理的效率和安全性...
本资源“二维条码生成与识别程序源码.rar”包含了一个C++开发的二维条码生成与识别系统,对于想要深入理解或集成此类功能的开发者来说,是一个宝贵的参考资料。 首先,我们要了解二维条码的基本概念。二维条码相比...
在IT行业中,利用编程语言如Java实现二维条码的生成与解析,可以极大地提高数据处理的效率和安全性。Java做的二维条码生成控件就是这样的一个工具,它允许开发者将数据编码为二维条码图像,以便于读取和保护。 首先...
本实验主要探讨了条码生成的过程,涵盖了从一维条码、二维条码到三维条码的生成原理、编码规则及其应用范围。以下是实验内容的详细阐述: 一、条码生成原理 1.1 一维条码 一维条码的工作原理基于不同颜色对光线的...
4. **解码功能**:除了生成,CBarCode类也可能支持解码功能,从已有的二维条形码图像中读取并解析出其中的数据,这对于验证条形码的正确性和读取信息至关重要。 5. **错误处理和兼容性**:一个完整的库会包含对各种...
这个库不仅支持二维码,还支持一维条形码,如EAN-13、UPC-A等。让我们深入了解一下ZXing库如何帮助我们实现二维码的生成与解析。 **一、二维码生成** 生成二维码的过程涉及以下几个步骤: 1. **数据编码**:首先...
在IT行业中,二维条码(二维码)已经成为数据传输和信息记录的重要工具,特别是在移动设备上。JSP(JavaServer Pages...对于初学者而言,这个例子是一个很好的起点,能够深入理解JSP开发以及二维条码生成的原理和实践。
二维码是一种二维条形码,可以存储更多的信息,如网址、文本、联系人信息等,而一维码(如EAN或UPC)通常用于商品的标识,存储的信息量相对较少。 **生成二维码和条形码** 1. **集成库**: Android中常用的库有`...
在IT行业中,条码生成与解析是数据管理与自动化流程中的关键组成部分。一维码、二维码和条形码是常见的编码系统,它们被广泛应用于商品追踪、库存管理、物流跟踪等多个领域。本教程将深入探讨这些编码技术以及如何在...
根据提供的信息,我们可以深入探讨如何使用PHP自动生成Code 39条形码,并解析其中涉及的关键概念和技术细节。 ### Code 39 条形码简介 Code 39(也称为US-49或Alphanumeric Code)是一种常用的条形码标准,能够...
在给定的标题“vc编写的二维条码算法源代码”中,我们可以推断这是一份使用C++编程语言(VC通常指的是Visual C++)实现的二维条形码生成与解析的源代码。这种源代码可能包含了对二维条形码格式的理解,如PDF417、QR ...
二维条码,全称是二维矩阵式条形码,是一种比一维条形码更高效的数据编码方式,能够存储大量的信息,包括文字、数字、图片等。在IT行业中,二维条码的应用广泛,如产品追溯、电子票务、文档管理等领域。本资源包含了...
一维条码与二维条码是现代数据标识和信息传输的重要工具,广泛应用于物流、零售、医疗、电子等行业。解码技术是实现这些条码功能的核心,尤其在高精度识别和超分辨率解码方面,对提升条码读取效率和准确性至关重要。...
二维条形码的生成软件,通常会提供界面友好的操作方式,用户输入需要编码的信息,软件自动生成对应的二维码图形。该资源包中可能包含了这样的软件,同时附带了操作说明手册,可以帮助用户理解和使用这些工具。 ...
这个"Android_条码扫描器_一维条形码_二维QR码_apk_源码"压缩包文件很可能是ZXing库的一个实现,包含了完整的Android应用源码,用于演示如何在Android项目中集成和使用ZXing进行条码扫描。 1. **ZXing库介绍** ...
《.NET条码生成器:实现二维条码与多种条码的源代码解析》 在IT行业中,条码技术广泛应用于商品管理、物流追踪、库存控制等领域,它以高效、准确的方式传递信息。本文将围绕标题《条码生成器.NET源代码(可生成二维...
5. **软件工具**:开发过程中,会用到条码生成器和解析库,这些工具可以帮助快速创建和解码条码。例如,开源的ZXing(Zebra Crossing)库支持多种一维和二维条码的读写。 6. **应用集成**:条码技术常与ERP、CRM...
QR码是一种二维条形码,能存储更多的信息,如网址、文本、联系人信息等。在本项目中,libqrencode被用来将用户提供的数据转化为QR码图像,适用于打印、显示或扫描。 Bar Code库可能是指一个通用的条形码生成库,它...