Google开源项目二维码读取与生成工具ZXing

google.zxing二维码生成工具:带有Logo的个性化二维码 本文还有配套的精品资源,点击获取 简介:二维码是广泛用于存储和快速读取大量信息的二维条形码。 google.zxing 是一个开源Java库,可以生成和读取条码和二维码,包括个性化版本带有自定义logo。该工具支持多种编程语言接口,便于开发者集成。使用该库可以生成带有Logo的二维码,同时保持信息的可读性。本工具包提供了源代码、示例代码和可执行文件或JAR包,... 阅读详情

在code.google.com上点击"开源计划"然后点击使用 Google 的代码

即可查看Google所有的开源项目列表

 

翻了几页,发现一个zxing以前没听说过(孤陋寡闻了)

原来是个二维码的识别程序库,刚好前几个月还困惑火车票上的防伪码是怎么做的(才知道那种码叫QRcode),

于是把代码下载了下来,顺便说一下,这个库的示例数据是图片,所以体积较大,大概130M,

我用tortoise SVN, 由于网速太慢,下了三个小时,

顺便在网上也查了查相关资料,编译了java版本的试了一下

效果不错,可以使用,于是又把其.net版的工程编译了一下,是一个dll,debug版的212K

参照javase中的GUIRunner.java代码(很短的几句代码),在C#中实现了一个二维码的读取识别(QRCode)

 

参照javase中的MatrixToImageWriter.java(代码也很短),实现了二维码图片的生成(QRCode)

 

贴一下代码,这是识别的:

  1. using System;  
  2. using System.Drawing;  
  3. using System.Windows.Forms;  
  4. using com.google.zxing;  
  5. using COMMON = com.google.zxing.common;  
  6. private void button1_Click(object sender, EventArgs e)  
  7.         {  
  8.             if (this.openFileDialog1.ShowDialog() != DialogResult.OK)  
  9.             {  
  10.                 return;  
  11.             }  
  12.             Image img = Image.FromFile(this.openFileDialog1.FileName);                          
  13.             Bitmap bmap;  
  14.             try  
  15.             {  
  16.                 bmap = new Bitmap(img);  
  17.             }  
  18.             catch (System.IO.IOException ioe)  
  19.             {  
  20.                 MessageBox.Show(ioe.ToString());  
  21.                 return;  
  22.             }  
  23.             if (bmap == null)  
  24.             {  
  25.                 MessageBox.Show("Could not decode image");  
  26.                 return;  
  27.             }  
  28.             LuminanceSource source = new RGBLuminanceSource(bmap, bmap.Width, bmap.Height);  
  29.             com.google.zxing.BinaryBitmap bitmap = new com.google.zxing.BinaryBitmap(new COMMON.HybridBinarizer(source));  
  30.             Result result;  
  31.             try  
  32.             {  
  33.                 result = new MultiFormatReader().decode(bitmap);  
  34.             }  
  35.             catch(ReaderException re)  
  36.             {  
  37.                 MessageBox.Show(re.ToString());  
  38.                 return;  
  39.             }  
  40.               
  41.             MessageBox.Show(result.Text);          
  42.         }  

 

 

 

生成图片的代码:

  1. private void button2_Click(object sender, EventArgs e)  
  2. {  
  3.     SaveFileDialog sFD = new SaveFileDialog();  
  4.     sFD.DefaultExt = "*.png|*.png";  
  5.     sFD.AddExtension = true;              
  6.       
  7.     try  
  8.     {  
  9.         if (sFD.ShowDialog() == DialogResult.OK)  
  10.         {  
  11.             string content = "我的电话号码:110119112118;手机型号:Blackberry 8100";  
  12.             COMMON.ByteMatrix byteMatrix = new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, 350, 350);  
  13.             writeToFile(byteMatrix, System.Drawing.Imaging.ImageFormat.Png, sFD.FileName);  
  14.         }  
  15.     }  
  16.     catch (Exception ex)  
  17.     {  
  18.         MessageBox.Show(ex.Message);  
  19.     }  
  20. }  
  21. public static void writeToFile(COMMON.ByteMatrix matrix, System.Drawing.Imaging.ImageFormat format, string file)  
  22. {  
  23.     Bitmap bmap = toBitmap(matrix);  
  24.     bmap.Save(file, format);  
  25. }  
  26. public static Bitmap toBitmap(COMMON.ByteMatrix matrix)  
  27. {  
  28.     int width = matrix.Width;  
  29.     int height = matrix.Height;  
  30.     Bitmap bmap = new Bitmap(width, height, System.Drawing.Imaging.PixelFormat.Format32bppArgb);  
  31.     for (int x = 0; x < width; x++)  
  32.     {  
  33.         for (int y = 0; y < height; y++)  
  34.         {  
  35.             bmap.SetPixel(x, y, matrix.get_Renamed(x, y) != -1 ? ColorTranslator.FromHtml("0xFF000000") : ColorTranslator.FromHtml("0xFFFFFFFF"));  
  36.         }  
  37.     }  
  38.     return bmap;              
  39. }  

 

 

 

源代码中有两处UTF-8的问题,会导致乱码,

其一:com.google.zxing.qrcode.encoder.encoder类中的

internal const System.String DEFAULT_BYTE_MODE_ENCODING = "ISO-8859-1";

此处,将ISO-8859-1改为UTF-8

其二:com.google.zxing.qrcode.decoder.DecodedBitStreamParser类的成员

private const System.String UTF8 = "UTF8";

应将UTF8改为UTF-8

 

手机像素,理论上30万的就可以,不过可能得有自动对焦的才行,

我的Blackberry 8100,130万的像素,拍出来的是无法识别,有rim的示例程序,

但是j2me的还没编译成功,所以还没办法尝试,提示找不到javax的一堆symbol(可能是wtk2.1版本有点旧)

 

生成的QRCode图:

这张图片里面的信息如下:

 

qrCodeInfo

 

 

=======================分割线2012-06-27分割线======================================

很抱歉不能给留言的同学一一回复,参考代码和编译好的dll我放到github上了,

需要的请移步下载  https://github.com/F-Sidney/ZXingGUI

 

参考资料:

Zxing调研 

使用ZXing进行二维码的生成

Google开放API生成二维码/php生成二维码 立即下载

相关推荐

51单片机通过计时器实现倒计时

51单片机通过计时器操作两位8段阳极数码管,实现倒计时

一份耕耘,一分收获 3万+

在React项目中使用Qrcode.react并实现下载以及刷新功能

【代码】在React项目中使用Qrcode.react并实现下载以及刷新功能。

Circle_Key的博客 3175

YOLOv8剪枝实战:基于torch_pruning的模型优化与性能提升指南

本文详细介绍了如何使用torch_pruning工具对YOLOv8模型进行结构化剪枝,以实现模型轻量化与性能提升。通过实战步骤解析,包括环境搭建、依赖图分析、迭代剪枝与微调策略,帮助开发者有效减少模型参数量和计算量,提升在边缘设备上的推理速度,同时保持检测(detect)与分割(segment)任务的精度。

water的专栏 1122

Java 基于zxing开源项目生成二维码以及二维码解析译码

基于zxing3.3.3,点击进行跳转到github的zxing开源项目下载开源项目文件 JDK版本为1.8 zxing-3.3.3 jar包下载 注意: 1、二维码扫描出来的网址显示的是文本而不是链接网站的原因:没有在网址前面加http://或https:// 例如:将www.baidu.com更改为https://www.baidu.com 2、实现二维码扫描下载安装软件(以安卓为...

Hern(宋兆恒) 1052

Gazebo仿真平台模型搭建与修改

ROS里踩过的坑(一)Gazebo仿真平台模型搭建与修改文件讲解Models 文件World文件Launch文件模型编辑可视化编辑配置文件编辑模型展示如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出...

Redglass的博客 1万+

STM32F407 CubeMX UART DMA高效解析BNO085九轴数据

本文详细介绍了如何在STM32F407平台上使用CubeMX配置UART和DMA高效解析BNO085九轴传感器数据。通过DMA循环接收机制实现低CPU占用的实时数据采集,并分享数据解析技巧、错误处理及实战调试经验,为嵌入式开发者提供完整解决方案。

o4p5q6r7s的博客 235

Cannot evaluate *.toString()

解决方法:子类实现toString 方法: @Override public String toString() { return ToStringBuilder.reflectionToString(this); }

苍苍尘渺天的专栏 1万+

IEEE S&P 2026 大模型安全论文整理

本文梳理了 IEEE S&P 2026(第47届 IEEE 安全与隐私研讨会)中与 LLM Safety 相关的论文,涵盖大模型越狱攻击、防御与对齐、隐私保护、RAG 安全、多模态大模型安全、智能体安全、图-LLM 安全、工具链安全及生成式 AI 安全与隐私等方向。

CSPhD-winston的博客 1335

zxing解析二维码抛出com.google.zxing.NotFoundException 解决方案

分析了一下,发现我在生成二维码的时候白色像素填充使用的是透明色,这样在显示的时候因为背景是白色,所以看上去和用手机扫都没有问题,但是自己代码识别的时候就会把透明色识别为黑色,这样就导致整个二维码图片全是黑色像素,所以zxing抛出com.google.zxing.NotFoundException异常。普通的二维码解析的时候,没什么问题。当二维码复杂了,或者是中间有LOGO的时候就报错,而且错误还看不出来具体错误信息,就一个com.google.zxing.NotFoundException。

strggle_bin的博客 2420

微信小程序 - {errCode: 10008, errno: 1500104, errMsg: “writeBLECharacteristicValue:fail write characteris

微信小程序errCode: 10008, errno: 1500104, errMsg: "writeBLECharacteristicValue:fail write characteristics error. 10008, errMsg=The value's length is invalid.",uni-app微信小程序报错,uniApp小程序调用蓝牙api报错,向低功耗蓝牙设备的某个特征写入数据时错误,UniApp微信小程序蓝牙API调用报错10008解决方案,蓝牙设备进行通信时,向设备写入数据

🏆 前端领域优质创作者 4431

在 Esp32 摄像头上实现边缘脉冲 FOMO 物体检测

本文将详细介绍如何在 Esp32 摄像头上实现边缘脉冲 FOMO 物体检测,并提供实现源码

DT程序员的博客 705

ZXing二维码编解码的使用

Google开源项目ZXing的网方网址:http://code.google.com/p/zxing/   ZXing (pronounced "zebra crossing") is an open-source, multi-format 1D/2D barcode image processing library implemented in Java, with ports to ot

arno_dzl的博客 2918

(一)激光线扫描-三维成像原理

激光线扫描是一种使用激光作为光源,通过特定的扫描设备(如光学镜头、电机驱动的镜头或电子扫描设备)将激光束引导到目标表面,并按照预定的路径进行扫描的技术。这种技术通常用于测量、检测、打印、切割等多种应用中。

FlyWine的博客 3629

Google开源项目ZXing(二维条码编解码)简单使用(Java版)

  Google开源项目ZXing的网方网址:http://code.google.com/p/zxing/   ZXing (pronounced "zebra crossing") is an open-source, multi-format 1D/2D barcode image processing library implemented in Java, with ports to...

wjxbj的博客 543

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

二维码、条形码扫描——使用Google ZXing

我在项目中用到了二维码扫描的技术,用的是Google提供的ZXing开源项目,它提供二维码和条形码的扫描。扫描条形码就是直接读取条形码的内容,扫描二维码是按照自己指定的二维码格式进行编码和解码。 可以到http://code.google.com/p/zxing/下载ZXing项目的源码,然后按照官方文档进行开发,我这里使用的ZXing是经过简化版的,去除了一些一般使用不必要的文件,项目工程截图...

java开发指南博客 【转载】 358

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

生成和扫描二维码(ZXing库)

生成和扫描二维码(ZXing库) 一、ZXing概述 ZXing是谷歌自己推出的一个开源源码的二维码框架,可以实现使用手机的摄像头完成条形码的扫描和解码。 二、整合ZXing框架 将预先获取的core-3.4.0.jar包复制到工程的app\libs目录,刷新,然后添加依赖 集成java源码,将demo工程QrScan中app\src\main\java目录下包中的zxing和util复制到本工程对应的app\src\main\java的包下 然后修改package包名,修改import路径,修

weixin_43916678的博客 2523

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

com.google.zxing 二维码生成与解析

目录 google ZXing 简介 二进制包下载 Maven 依赖 代码示例 保存二维码图片 在线生成二维码 解析二维码图片 工具类完整内容 google ZXing 简介 Java 操作二维码的开源项目很多,如 SwetakeQRCode、BarCode4j、Zxing 等等 本文将介绍简单易用的 google 公司的 zxing,zxing 使用方便,可以操作条形码或者...

蚩尤后裔-汪茂雄 5万+
上一篇: js正则函数match、exec、test、search、replace、split使用介绍集合
下一篇: js 返回上一页和刷新
HackProgramer
博客等级 码龄12年 255粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值