- 浏览: 5156720 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
silence19841230:
先拿走看看
SpringBoot2.0开发WebSocket应用完整示例 -
wallimn:
masuweng 写道发下源码下载地址吧!三个相关文件打了个包 ...
SpringBoot2.0开发WebSocket应用完整示例 -
masuweng:
发下源码下载地址吧!
SpringBoot2.0开发WebSocket应用完整示例 -
masuweng:
SpringBoot2.0开发WebSocket应用完整示例 -
wallimn:
水淼火 写道你好,我使用以后,图标不显示,应该怎么引用呢,谢谢 ...
前端框架iviewui使用示例之菜单+多Tab页布局
最近琢磨了一下二维码、一维码的编码、解码方法,感觉google的zxing用起来还是比较方便。
本人原创,欢迎转载,转载请标注原文地址:http://wallimn.iteye.com/blog/2071020
一、工具类
二、使用示例
本人原创,欢迎转载,转载请标注原文地址:http://wallimn.iteye.com/blog/2071020
一、工具类
package com.exam.services.qrcode; 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.Result; import com.google.zxing.WriterException; import com.google.zxing.client.j2se.BufferedImageLuminanceSource; import com.google.zxing.common.BitMatrix; import com.google.zxing.common.HybridBinarizer; import javax.imageio.ImageIO; import java.io.File; import java.io.OutputStream; import java.io.IOException; import java.util.Hashtable; import java.awt.image.BufferedImage; /** * 使用ZXing2.3,生成条码的辅助类。可以编码、解码。编码使用code包,解码需要javase包。 * * <br/> * <br/> * 作者:wallimn<br/> * 联系:54871876@qq.com,http://wallimn.iteye.com<br/> * 时间:2014年5月25日 下午10:33:05<br/> */ public final class MatrixUtil { private static final String CHARSET = "utf-8"; private static final int BLACK = 0xFF000000; private static final int WHITE = 0xFFFFFFFF; /** * 禁止生成实例,生成实例也没有意义。 */ private MatrixUtil() { } /** * 生成矩阵,是一个简单的函数,参数固定,更多的是使用示范。 * * <br/> * <br/> * 作者:wallimn<br/> * 时间:2014年5月25日 下午10:41:12<br/> * 联系:54871876@qq.com<br/> * * @param text * @return */ public static BitMatrix toQRCodeMatrix(String text, Integer width, Integer height) { if (width == null || width < 300) { width = 300; } if (height == null || height < 300) { height = 300; } // 二维码的图片格式 Hashtable<EncodeHintType, String> hints = new Hashtable<EncodeHintType, String>(); // 内容所使用编码 hints.put(EncodeHintType.CHARACTER_SET, CHARSET); BitMatrix bitMatrix = null; try { bitMatrix = new MultiFormatWriter().encode(text, BarcodeFormat.QR_CODE, width, height, hints); } catch (WriterException e) { // TODO Auto-generated catch block e.printStackTrace(); } // 生成二维码 // File outputFile = new File("d:"+File.separator+"new.gif"); // MatrixUtil.writeToFile(bitMatrix, format, outputFile); return bitMatrix; } /** * 将指定的字符串生成二维码图片。简单的使用示例。 * * <br/> * <br/> * 作者:wallimn<br/> * 时间:2014年5月25日 下午10:44:52<br/> * 联系:54871876@qq.com<br/> * * @param text * @param file * @param format * @return */ public boolean toQrcodeFile(String text, File file, String format) { BitMatrix matrix = toQRCodeMatrix(text, null, null); if (matrix != null) { try { writeToFile(matrix, format, file); return true; } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } return false; } /** * 根据点矩阵生成黑白图。 作者:wallimn<br/> * 时间:2014年5月25日 下午10:26:22<br/> * 联系:54871876@qq.com<br/> */ public static BufferedImage toBufferedImage(BitMatrix matrix) { int width = matrix.getWidth(); int height = matrix.getHeight(); BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); for (int x = 0; x < width; x++) { for (int y = 0; y < height; y++) { image.setRGB(x, y, matrix.get(x, y) ? BLACK : WHITE); } } return image; } /** * 将字符串编成一维条码的矩阵 * * <br/> * <br/> * 作者:wallimn<br/> * 时间:2014年5月25日 下午10:56:34<br/> * 联系:54871876@qq.com<br/> * * @param str * @param width * @param height * @return */ public static BitMatrix toBarCodeMatrix(String str, Integer width, Integer height) { if (width == null || width < 200) { width = 200; } if (height == null || height < 50) { height = 50; } try { // 文字编码 Hashtable<EncodeHintType, String> hints = new Hashtable<EncodeHintType, String>(); hints.put(EncodeHintType.CHARACTER_SET, CHARSET); BitMatrix bitMatrix = new MultiFormatWriter().encode(str, BarcodeFormat.CODE_128, width, height, hints); return bitMatrix; } catch (Exception e) { e.printStackTrace(); } return null; } /** * 根据矩阵、图片格式,生成文件。 作者:wallimn<br/> * 时间:2014年5月25日 下午10:26:43<br/> * 联系:54871876@qq.com<br/> */ public static void writeToFile(BitMatrix matrix, String format, File file) throws IOException { BufferedImage image = toBufferedImage(matrix); if (!ImageIO.write(image, format, file)) { throw new IOException("Could not write an image of format " + format + " to " + file); } } /** * 将矩阵写入到输出流中。 作者:wallimn<br/> * 时间:2014年5月25日 下午10:27:58<br/> * 联系:54871876@qq.com<br/> */ public static void writeToStream(BitMatrix matrix, String format, OutputStream stream) throws IOException { BufferedImage image = toBufferedImage(matrix); if (!ImageIO.write(image, format, stream)) { throw new IOException("Could not write an image of format " + format); } } /** * 解码,需要javase包。 * * <br/> * <br/> * 作者:wallimn<br/> * 时间:2014年5月25日 下午11:06:07<br/> * 联系:54871876@qq.com<br/> * * @param file * @return */ public static String decode(File file) { BufferedImage image; try { if (file == null || file.exists() == false) { throw new Exception(" File not found:" + file.getPath()); } image = ImageIO.read(file); LuminanceSource source = new BufferedImageLuminanceSource(image); BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source)); Result result; // 解码设置编码方式为:utf-8, Hashtable hints = new Hashtable(); hints.put(DecodeHintType.CHARACTER_SET, CHARSET); result = new MultiFormatReader().decode(bitmap, hints); return result.getText(); } catch (Exception e) { e.printStackTrace(); } return null; } }
二、使用示例
package com.exam.services.qrcode; import java.io.File; public class Test { /** * 测试函数。简单地将指定的字符串生成二维码图片。 * * <br/><br/> * 作者:wallimn<br/> * 时间:2014年5月25日 下午10:30:00<br/> * 联系:54871876@qq.com<br/> */ public static void main(String[] args) throws Exception { String text = "http://wallimn.itey.com"; String result; String format = "gif"; //生成二维码 File outputFile = new File("d:"+File.separator+"rqcode.gif"); MatrixUtil.writeToFile(MatrixUtil.toQRCodeMatrix(text, null, null), format, outputFile); result = MatrixUtil.decode(outputFile); System.out.println(result); outputFile = new File("d:"+File.separator+"barcode.gif"); MatrixUtil.writeToFile(MatrixUtil.toBarCodeMatrix(text, null, null), format, outputFile); result = MatrixUtil.decode(outputFile); System.out.println(result); } }
发表评论
-
gradle编译错误:Could not find method compile() for arguments
2020-09-19 10:50 18457编译(IDEA+Gradle)一个别人的工程,出现一个 ... -
netty心跳检查之UDP篇
2019-09-15 08:50 2374部分UDP通信场景中,需要客户端定期发送心跳信息,以获取终 ... -
解决tomcat部署两个SpringBoot应用提示InstanceAlreadyExistsException
2019-06-30 11:49 3375两个SpringBoot应用部署在一个Tomcat中,单独 ... -
Eclipse配置MyBatis代码自动化功能
2019-06-29 10:16 17621.安装插件 Eclipse中,Help->Ecli ... -
vue.js中使用qrcode生成二维码
2019-05-20 00:00 7652一、安装包 npm install qrcodejs2 --s ... -
MySQL插入数据报错: Incorrect string value: '\xFD\xDE'
2019-03-31 23:19 1226我MySQL数据库用的uft-8字符集,插入数据一直很正常 ... -
vue自定义组件并双向绑定属性
2019-03-08 22:46 3255做了两个子组件,原理基本一样,一个是使用原生的select ... -
vue-router简单示例
2019-03-05 00:32 1143写个基本完整、稍有借鉴意义的示例,防止自己忘记。 &l ... -
“联通充值系统繁忙”轻松应对
2019-02-06 11:03 3973大过年的,联通充个值一直报“充值系统繁忙”。昨天晚上试了几 ... -
electron.js数据库应用---导航菜单(element-ui+mysql)
2019-02-05 21:33 2361一、环境搭建 略, ... -
electron.js数据库应用---入门(mysql+element-ui)
2019-01-27 23:19 7482我的机器:Windows10,64 ... -
SpringMVC 在controller层中注入成员变量request,是否线程安全
2018-12-17 21:17 2743@RestController public class ... -
VueJS 组件参数名命名与组件属性转化
2018-12-03 00:00 2068转自:https://www.cnblogs.com/meiy ... -
vue-resource拦截器实现token发送及检验自动化
2018-11-16 22:38 3076用了很长时间vue-resource,最近思考$http发 ... -
element-ui试用手记
2018-10-29 20:25 1739element-ui、iviewui都以vue.js为基础 ... -
iviewui中表格控件中render的使用示例
2018-07-07 16:46 9780示例了如何在表格中显示按钮,如何将代码转化为文字。 i ... -
Tomcat错误“Alias name tomcat does not identify a key entry”解决
2018-07-05 21:39 6550申请到了阿里云的证书后,下载、按照说明生成jks格式证书、 ... -
阿里云免费证书“fileauth.txt内容配置错误”解决
2018-07-05 20:43 5292最近研究微信小程序开发,上阿里云申请了个证书,使用文件验证 ... -
springboot2.0跨域配置
2018-07-04 22:11 5282springboot2.0跨域配置: 一、代码 ... -
微信小程序使用code换openid的方法(JAVA、SpringBoot)
2018-07-01 21:52 10395微信小程序序的代码中提示,使用code换取openid,但 ...
相关推荐
ZXing(Zebra Crossing)是Google开发的一个开源项目,专门用于处理一维条形码和二维二维码的生成与读取。这个项目的名字来源于其英文名的首字母缩写,象征着“斑马线”,寓意在数据世界中指引信息的交汇。ZXing提供...
本项目专注于利用ZXing进行一维码和二维码的解析,将扫描到的编码内容转化为易于理解的字符串形式。 ### 1. ZXing简介 ZXing,寓意“斑马线”,是由Google开发的一个跨平台的条码处理库。它支持多种条码格式,包括...
通过以上步骤,我们可以利用iReport结合ZXing库来生成具有一维码和二维码的报表,从而增强报表的信息承载能力和交互性。在实际应用中,这种功能可以广泛应用于产品标签、门票、营销推广等领域,为用户提供便捷的数据...
在IT行业中,一维码和二维码是数据编码的两种常见形式,广泛应用于商品标识、物流追踪、信息存储等领域。...在各种场景下,开发者都可以利用Zxing来实现与一维码和二维码相关的功能,提升应用的用户体验。
ZXing(Zebra Crossing)是Google开发的一个强大的开源Java类库,它支持多种一维码和二维码的解码与编码,为开发者提供了一个便捷的工具来集成条形码扫描功能到他们的应用中,特别是在Android平台上。 一维码,全称...
在Java编程环境中,生成一维码和二维码是一项常见的任务,特别是在数据交换、追踪与追溯、信息展示等场景中。本文将深入探讨如何使用Java来创建一维码(如条形码)和二维码,并介绍相关jar包的使用方法。 首先,...
ZXing(Zebra Crossing)是Google开发的一个开源项目,用于读取、生成各种一维条形码和二维二维码。ZXing-2.3.0版本是这个库的一个里程碑,提供了丰富的功能和优化,使得开发者可以方便地在Android、iOS以及其他平台...
关于Zxing和QRCode的比较,Zxing功能更全面,支持多种编码解码格式,而QRCode则专精于二维码生成,API设计更加简洁。在选择使用哪个库时,需要根据项目需求和性能考虑。 总的来说,生成带有中间logo的Java二维码...
ZXing(Zebra Crossing)是Google开发的一个开源项目,专门用于处理一维条形码和二维条码,包括二维码。本教程将详细介绍如何利用ZXing库创建一个简单的二维码解码和生成应用。 首先,我们需要了解ZXing库的核心...
生成二维码的过程与一维码类似,只是更换了`BarcodeFormat`: ```java BarcodeFormat format = BarcodeFormat.QR_CODE; String content = "https://example.com"; Bitmap bitmap = encoder.encodeBitmap(content, ...
Java ZXing库,全称“Zebra Crossing”,是一款开源的二维码和条形码处理库,广泛应用于各种数据编码和解码场景。它提供了强大的功能,能够轻松地在Java应用程序中生成和读取二维码和条形码。下面我们将深入探讨如何...
这两个资源包,`javase-3.2.1.jar` 和 `zxing-core-3.2.1.jar`,是开发Java应用程序时用于生成和解析一维码与二维码的关键组件。 `javase-3.2.1.jar` 是一个针对Java Standard Edition(Java SE)平台的特定版本库...
总之,Google ZXing提供的源码Demo是一个宝贵的教育资源,可以帮助开发者深入了解条形码和二维码的生成与扫描原理,以及如何在实际项目中高效地利用ZXing库。通过深入研究这个源码,你不仅可以掌握ZXing的基本用法,...
Java 生成二维码是一种常见的数据编码需求,ZXing(Zebra Crossing)是一个开源的、多格式的一维/二维条码图像处理库,它支持多种条码和二维码的生成与解码。在Java中利用ZXing库生成二维码,可以方便地将文本、链接...
在提供的资源中,“java解析生成一维码二维码源码加相关的jar包”是一个解决方案,它基于ZXing(Zebra Crossing)库。ZXing是一个开源的、多平台的条形码和二维码读取、生成项目,它提供了多种编程语言的支持,包括...
本教程将详细介绍如何在Android应用中利用Zxing进行编码与解码操作。 **1. Zxing简介** Zxing,又称为Google条码阅读器,是一个跨平台的开源库,用于读取和写入多种一维和二维条码格式。在Android中,Zxing提供了`...
ZXing(又称为“ZXing库”或“二维码扫描器”)是一个开源Java库,它支持多种一维条形码和二维条码格式,包括但不限于QRCode、DataMatrix、UPC-A、EAN-13等。该库不仅提供Java版本,还支持Android和iOS平台,使得...
在IT行业中,一维码和二维码是数据编码与识别的重要技术,广泛应用于商品追溯、物流管理、信息交换等领域。在Java编程环境下,实现一维码和二维码的生成与解析是一项常见的任务。本篇将深入探讨如何利用Java进行一维...
ZXing,通常被称为“条形码扫描器”,是一个开源项目,提供多种格式的一维和二维条码的读取和编写能力。ZXing 2.2版本是一个相对旧但仍然广泛使用的版本,它支持包括QR码在内的多种编码格式。在Java环境中,你可以...