前言

最近公司的项目需要加入本地相册识别二维码的功能,就类似与微信那样。大家都知道二维码识别目前火的一个是Zing,一个就是Zbar,针对于这两个的区别,在此也不再赘述。(PS:网上的资料有很多)由于公司扫描二维码,一直采用的zxing,没有用Zbar,所以只研究了下Zing的本地相册识别二维码。刚开始,我也不知道这东西怎么做,只看过没写过,但我想这样的功能网上一定会有成熟的demo吧,遗憾的是我Google了半天,没有找到一个我想要的。有的作者确实实现了,但写的demo功能太全了,我只想做个识别本地相册二维码这么个小功能,不需要那么多暂时用不到的代码集到项目当中。所以就有了这篇文章,本篇文章功能单一,就只有识别相册二维码的功能。

效果图:

解析相册二维码关键代码如下:

 /*** 解析图片中的 二维码** @param photo 待解析的图片* @return String 解析结果*/public static String decodeFromPhoto(Bitmap photo) {Result rawResult = null;if (photo != null) {Bitmap smallBitmap = BitmapUtil.zoomBitmap(photo, photo.getWidth() / 2,             photo.getHeight() / 2);// 为防止原始图片过大导致内存溢出,这里先缩小原图显示,然后释放原始Bitmap占用的内存photo.recycle(); // 释放原始图片占用的内存,防止out of memory异常发生MultiFormatReader multiFormatReader = new MultiFormatReader();// 解码的参数Hashtable<DecodeHintType, Object> hints = new Hashtable<>(2);// 可以解析的编码类型Vector<BarcodeFormat> decodeFormats = new Vector<>();if (decodeFormats.isEmpty()) {decodeFormats = new Vector<>();Vector<BarcodeFormat> PRODUCT_FORMATS = new Vector<>(5);PRODUCT_FORMATS.add(BarcodeFormat.UPC_A);PRODUCT_FORMATS.add(BarcodeFormat.UPC_E);PRODUCT_FORMATS.add(BarcodeFormat.EAN_13);PRODUCT_FORMATS.add(BarcodeFormat.EAN_8);// PRODUCT_FORMATS.add(BarcodeFormat.RSS14);Vector<BarcodeFormat> ONE_D_FORMATS = new Vector<>(PRODUCT_FORMATS.size() + 4);ONE_D_FORMATS.addAll(PRODUCT_FORMATS);ONE_D_FORMATS.add(BarcodeFormat.CODE_39);ONE_D_FORMATS.add(BarcodeFormat.CODE_93);ONE_D_FORMATS.add(BarcodeFormat.CODE_128);ONE_D_FORMATS.add(BarcodeFormat.ITF);Vector<BarcodeFormat> QR_CODE_FORMATS = new Vector<>(1);QR_CODE_FORMATS.add(BarcodeFormat.QR_CODE);Vector<BarcodeFormat> DATA_MATRIX_FORMATS = new Vector<>(1);DATA_MATRIX_FORMATS.add(BarcodeFormat.DATA_MATRIX);// 这里设置可扫描的类型,我这里选择了都支持decodeFormats.addAll(ONE_D_FORMATS);decodeFormats.addAll(QR_CODE_FORMATS);decodeFormats.addAll(DATA_MATRIX_FORMATS);}hints.put(DecodeHintType.POSSIBLE_FORMATS, decodeFormats);// 设置继续的字符编码格式为UTF8// hints.put(DecodeHintType.CHARACTER_SET, "UTF8");// 设置解析配置参数multiFormatReader.setHints(hints);// 开始对图像资源解码try {rawResult = multiFormatReader.decodeWithState(new BinaryBitmap(new HybridBinarizer(new BitmapLuminanceSource(smallBitmap))));} catch (Exception e) {e.printStackTrace();}}return rawResult == null ? "" : rawResult.getText();}

由于代码比较简单,代码中也有相应的注释,这里就不多解释了,大家可以下载demo看一下,希望对大家有所帮助!

Demo地址

Zing实现本地相册识别二维码相关推荐

  1. CIDetector 相册识别二维码出错

    在做点击相册识别二维码识别不了,折腾了大半天,终于从坑里爬出来 ,下面分享一下填坑过程 在创建相册和获取图片的时候添加上面的代码.然后用取出来的图片作为参数进行二维码识别,下面封装了一个类方法: pu ...

  2. uniapp 对富文本中的图片预览及长按图片识别二维码/保存图片

    uniapp 对富文本中的图片预览及长按图片识别二维码/保存图片 富文本一定要使用uniapp提供的<rich-text>标签,不要使用 v-html 因为<rich-text> ...

  3. Android 扫描、生成、识别二维码、条码 一库搞定

    他来了,他来了,他带着YXing走来了. YXing 集成了CameraX + zxing, 简洁调用,功能完善,自定义扫码界面,再也不用像以前一样cv一堆冗余的Camera代码进项目了. 怎么集成: ...

  4. 使用JS调用手机本地摄像头或者相册图片识别二维码/条形码

    接着昨天的需求,不过这次不依赖微信,使用纯js唤醒手机本地摄像头或者选择手机相册图片,识别其中的二维码或者是条形码.昨天,我使用微信扫一扫识别,效果超棒的.不过如果依赖微信的话,又怎么实现呢,这里介绍 ...

  5. Zxing图片识别 从相册选二维码图片解析总结

    Zxing图片识别 从相册选取二维码图片进行解析总结 在Zxing扫描识别和图片识别的解析对象是相同的 本文分三个步骤: 1 获取相册的照片 2 解析二维码图片 3 返回结果 1) 获取相册照片 go ...

  6. ZXing 相册中识别二维码和条形码(直接引用就可以了)

    *百度了很久一直没有找到关于相册获取条形码的Demo,真心是醉了,只能苦逼的去自己看 闲话不说直接搞起 分析: *核心 1,通过路径转换成bitmp对象 2,再bitmap对象转换成二进制图片(二值化 ...

  7. Android二维码多码识别,相册选择二维码,自定义扫码界面

    现在很多App都有扫码识别二维码的场景,最新的扫码已经支持全屏扫码.从相册选取二维码识别,以下使用基于Zxing封装的一个库:https://github.com/maning0303/MNZXing ...

  8. Android利用zxing用相机扫描识别二维码(添加闪光灯和本地二维码)超详细教程

    之前写了怎么用zxing的jar包进行简单的识别和生成二维码,以及生成带图片的二维码. 接下来单独说说怎么用相机扫描二维码,用相机扫描二维码相对于前面的生成二维码,识别二维码来说要麻烦一点,网上的教程 ...

  9. Android Studio 扫描识别二维码(包含闪光灯和本地二维码)、生成二维码、生成带logo的二维码

    一.测试如下: 1.扫描识别二维码,扫描结果多少 2.生成二维码.生成带logo的二维码 二.添加依赖: 1.在Project的build.gradle中添加maven { url 'https:// ...

最新文章

  1. 如何用python创建一个下载网站-使用Python下载文件的简单示例
  2. 数据库SQL语句 使用DML语言 插入数据
  3. GameMaker Studio 中的组合技(Combo)设置
  4. C语言之常见错误解决办法
  5. 四处建实验室的Facebook说,我们没想跟学术界抢人啊
  6. 求最长XX序列的两种方法
  7. 7.企业应用架构模式 --- 分布策略
  8. c#操作斑马打印机打印中文
  9. 你敢信?用数学公式编辑器也能打出化学公式
  10. 计算机表格中的乘法怎么用,excel表格中怎么使用乘法公式
  11. web第六课:div标签和span标签
  12. payjs 源码_自动发卡系统(包含前台以及后台管理系统),对接payjs支付(无须企业认证)...
  13. 一种简单、安全的Dota全图新思路
  14. 基于Gensim的Word2Vec的应用
  15. 【PDF下载】大数据峰会之MaxCompute大数据语言的新发展
  16. 题解报告:hdu 1570 A C
  17. Android Studio Dolphin 的 gradle-7.5.1-all.zip 下载(包含其他版本)
  18. 如何相对高效解决代码测评、训练过程中遇到的 Bug
  19. oracle查询年份的后两位,Oracle对2位年份的处理
  20. Python | 用Python制作送给女票的生日礼物

热门文章

  1. 【Unity】动作游戏开发实战详细分析-26-组合攻击
  2. 行存储 VS 列存储
  3. 手机wifi服务器文件途径,查看手机wifi服务器dns地址
  4. 笔记本电脑ip服务器未运行怎么办,如何解决控制台打开(Pubwin)提示“服务器未启动或服务器IP地址已更改”的问题...
  5. 你沐浴后的味道,根本让人把持不住!留香24小时,比喷了大牌香水还迷人!...
  6. 计算机的配件知识,组装一台电脑需要哪些配件 DIY装机必看的电脑硬件知识详解 (全文)...
  7. android 紫外线传感器,Arduino光线传感器-UV Sensor V1.0-ML8511紫外线传感器
  8. OJ《程序设计基础I 》实验5-一维数组
  9. flex布局 gird布局
  10. vue项目访问路径添加项目名称