- 浏览: 556251 次
- 性别:
- 来自: 长沙
文章分类
- 全部博客 (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 10216一) logback已经提供了一个DBAppender(ch. ... -
Java生成缩略图之Thumbnailator(转载)
2013-07-15 21:19 2728Java生成缩略图之Thumbnailator(转载) 原文 ... -
pinyin4j 的应用
2013-05-12 08:59 1244<!-- pinyin4j --> < ... -
memcached学习笔记(二) 使用memcached java客户端
2012-07-11 11:51 14001) 了解了一下 memcached 客户端常见的有两种 sp ... -
memcached学习笔记(一) instanll memcached on windows machine
2012-07-11 10:44 15771) 下载 http://code.jellycan.com/ ... -
Zip 压缩和解压缩
2011-12-31 14:17 1671要依赖 ant.1.7.0.jar <depend ... -
Log4j RollingFileAppender和DailyRollingFileAppender杂交
2011-12-16 15:13 3883package org.apache.log4j; ... -
BoneCP
2011-11-07 10:39 27021) BoneCP加入工程 <dependency& ... -
Quartz 任务调度器
2011-05-04 15:33 1813字段允许值允许的特殊 ... -
commons-email笔记
2011-04-15 11:59 1636使用Apache Commons-email发送电子邮件 所 ... -
commons-digest笔记
2011-04-12 11:09 1393本文为转载且为截取的片段,如有需要请访问原帖 待解析的xml ... -
json-taglib
2011-03-29 14:53 1751JSON-taglib是一套JSP标签库用于在JSP代码中输出 ... -
JSR-303
2011-03-21 15:45 12015JSR-303 是JAVA EE 6 中的一项子规范,叫做Be ... -
JUnit如何使用
2011-02-17 13:34 4769一,Junit4是Junit框架有 ... -
Apache-dom4j的使用(二)
2011-02-11 15:57 2018本小节讲如何使用dom4j解析一个xml文件 以读取book ... -
Apache-dom4j的使用(一)
2011-02-11 14:15 1314本节主要介绍如何用dom4j生成一个xml文档 <? ... -
log4j的xml配置方式
2011-01-15 07:33 1586一,原来一贯用的properties配置文件 log4j.pr ...
相关推荐
一维码 、二维码 、条形码生成与解析,有完整的代码。
里面有jar,已经事例,代码,打开可以直接使用,
java二维码生成与解析源码内含核心包文件QRCode.jar。 二维码的特点: 1. 高密度编码,信息容量大 可容纳多达1850个大写字母或2710个数字或1108个字节,或500多个汉字,比普通条码信息容量约高几十倍。 2. 编码...
Java实现生成和解析二维码...二维码又称二维条码,常见的二维码为QR Code,QR全称Quick Response,是一个近几年来移动设备上超流行的一种编码方式,它比传统的Bar Code条形码能存更多的信息,也能表示更多的数据类型。
统内容包括两部分:二维条码的生成系统设计和二维条码的识别系统设计。生成系统完成了从输入数据到生成相应二维 码的功能,识别系统完成对采集到的二维码符号进行译码还原出所携带信息的功能。
3.容错能力强,具有纠错功能:这使得二维条码因穿孔、污损等引起局部损坏时,照样可以正确得到识读,损毁面积达50%仍可恢复信息。 4.译码可靠性高:它比普通条码译码错误率百万分之二要低得多,误码率不超过千万分...
ZXing库是一个开源Java类库,可用于生成和解析多种格式的1D/2D条形码,一个支持在图像中解码和生成条形码(如二维码、PDF 417、EAN、UPC、Aztec、Data Matrix、Codabar)的库。ZXing(“zebra crossing”)是一个开源的...
支持多种格式的一维、二维条形码图片处理开发库。
QR码用数据压缩方式表示汉字,仅用13bit即可表示一个汉字,比其他二维条码表示汉字的效率提高了20%。QR具有4个等级的纠错功能,即使破损也能够正确识读。QR码抗弯曲的性能强,通过QR码中的每隔一定的间隔配置有校正...
- ZXing是一个开源的条码识别软件,包括多种一维和二维条码的解码功能。 - 它支持多种类型的条码,包括QR码、Data Matrix、EAN-13、Code 39等。 - ZXing的优点在于它能够快速准确地读取和解析各种类型的条码。 - 它...
最近项目用到了条码打印等功能,所以顺便学习下条码的知识,目前网上这里信息确实很多,我也直接拿来用的。 只是在各位前辈的基础...4.QR Code码制的二维条码生成 5.二维码制的解析功能 感兴趣的童鞋可以拿去用哦!!
二、生成二维码 .NET 平台的代码始终要简单些。 QrCodeEncodingOptions options = new QrCodeEncodingOptions(); options.CharacterSet = UTF-8; options.DisableECI = true; // Extended Channel Int
QRcode是一种矩阵二维码符号,它具有一维条码及其它二维条码所具有的信息容量大、可靠性高、可表示汉字及图象多种文字信息、保密防伪性强等优点。可以使用QRCode.jar生成与解析二维码。
二维条码/二维码(2-dimensional bar code)是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的;在代码编制上巧妙地利用构成计算机内部逻辑基础的“0”、“1”比特流的...
10.4 手机QRCode二维条形码生成器——Canvas与SurfaceHolder绘图 10.5 AndroidQRCode二维条形码扫描仪——BitmapFactory.decodeByteArray 10.6 上班族今天中午要吃什么——热量骰子地图 10.7 掷杯筊——把手机放在...
10.4 手机QRCode二维条形码生成器——Canvas与SurfaceHolder绘图 10.5 AndroidQRCode二维条形码扫描仪——BitmapFactory.decodeByteArray 10.6 上班族今天中午要吃什么——热量骰子地图 10.7 掷杯筊——把手机放在...
10.4 手机QRCode二维条形码生成器——Canvas与SurfaceHolder绘图 10.5 AndroidQRCode二维条形码扫描仪——BitmapFactory.decodeByteArray 10.6 上班族今天中午要吃什么——热量骰子地图 10.7 掷杯筊——把手机放在...
10.4 手机QRCode二维条形码生成器——Canvas与SurfaceHolder绘图 10.5 AndroidQRCode二维条形码扫描仪——BitmapFactory.decodeByteArray 10.6 上班族今天中午要吃什么——热量骰子地图 10.7 掷杯筊——把手机放在...
10.2 GPS轨迹记录器——利用LocationListener在地图上画图并换算距离 10.3 女性贴身看护——AlarmManager.DatePicker.TimePicker 10.4 手机QRCode二维条形码生成器——Canvas与SurfaceHolder绘图 10.5 AndroidQRCode...