服务咨询热线0898-88889999
网站首页 关于沐鸣灯具 沐鸣注册 新闻动态 沐鸣登录 行业资讯 开户下载 在线留言 联系我们
咨询热线
0898-88889999
地址:海南省海口市
邮箱:admin@youweb.com

新闻动态

当前位置: 首页 > 新闻动态

《打造极致二维码扫描系列》 -- ZBar开发详解

发布时间:2024-10-14 21:16:09 点击量:



ZBar是一个开源库,用于扫描、读取二维码和条形码。支持的二维码包括:EAN/UPC,QR等。


如果你是一个iPhone应用开发人员,做到二维码模块的时候,是不是会考虑ZBar开源项目来助你一臂之力呢?可是我这里说的是Android平台的开发,我为什么提到ZBar项目呢,难道我要用ZBar在Android平台扫描二维码吗?对的,没有错!这将会是一个极其不错的选择。为什么这么说呢,不是很多Android开发都是用ZXing来解析二维码的么?好吧,ZXing是我下一篇文章要写的,这里先抛砖引玉说一点点。我将ZXing和ZBar做一个比较,说说它们的优缺点,便于大家的取舍。


  • ZXing项目的示例程序对于摄像头的控制写的非常全面,ZBar的没有
  • ZBar基于C语言编写,解码效率高于ZXing项目
  • ZBar是日本人写的,对于中文解析会乱码这个肯定有人遇到过的,ZXing不会乱码
  • 扫描框的绘制,ZXing的扫描框绘制是自定义View的,截取区域不好控制(至少我没控制好),ZBar的可以自定义,只要你会计算截取区域

这里需要着重说一下第四点,我也是沿着解决这个第四点和第二点的问题才思考了这么多东西的。好烦躁自己的这种强迫症啊抓狂



1. 着重介绍一下扫描截取界面的计算:


  • pt: 预览图中二维码图片的左上顶点坐标,也就是手机中相机预览中看到的待扫描二维码的位置
  • qrheight: 预览图中二维码图片的高度
  • qrwidth: 预览图中二维码图片的宽度
  • pheight:预览图的高度,也即camera的分辨率高度
  • pwidth: 预览图的宽度,也即camera的分辨率宽度

  • st: 布局文件中扫描框的左上顶点坐标
  • sheight: 布局文件中扫描框的高度
  • swidth: 布局文件中扫描框的宽度
  • cheight:布局文件中相机预览控件的高度
  • cwidth: 布局文件中相机预览控件的宽度


其中存在这样一个等比例公式:


ptx / pwidth=stx / cwidth ;

pty / pheight=sty / cheight ;

qrwidth / pwidth=swidth / cwidth ;

qrheight / pheight=sheight / cheight ;


即:


ptx=stx * pwidth / cwidth ;

pty=sty * pheight / cheight ;

qrwidth=swidth * pwidth / c

平台注册入口