续上一篇,开发图片二维码识别功能后,我们对功能进行性能分析内存占用显著提高了,不使用该功能内存占用大约是147M,使用这个功能多次以后,高达203M。

因此对功能进行研究,发现每次生成的图片没有即时的释放,导致内存中的图片不断累积,内存占用不断攀升。因此,需要对图片进行释放,释放的时候需要特别关注的地方有:

1.释放注意图片的状态。

2.注意异常的捕获。

下面就是图片释放的有关代码。

/*** 回收bitmap*/public static void recycleBitmap(Bitmap bitmap ) {if(bitmap != null && !bitmap.isRecycled()){bitmap.recycle();bitmap = null;}}

对于异常的捕获主要是需要关注图片在进行encode和decode过程中的处理,原来的方法应该改为如下:

public static Result handleQRCodeFormBitmap(Bitmap bitmap) {Map<DecodeHintType, Object> hints = new EnumMap<>(DecodeHintType.class);hints.put(DecodeHintType.CHARACTER_SET, "utf-8");hints.put(DecodeHintType.TRY_HARDER, Boolean.TRUE);hints.put(DecodeHintType.POSSIBLE_FORMATS, BarcodeFormat.QR_CODE);RGBLuminanceSource source = null;QRCodeReader reader2 = null;Result result = null;try {source = new RGBLuminanceSource(bitmap);BinaryBitmap bitmap1 = new BinaryBitmap(new HybridBinarizer(source)); reader2 = new QRCodeReader();result = reader2.decode(bitmap1, hints);} catch (Exception e) {e.printStackTrace();if (source != null && reader2 != null) {BinaryBitmap bitmap2 = new BinaryBitmap(new GlobalHistogramBinarizer(source)); try {result = reader2.decode(bitmap2, hints);} catch (Exception e1) {e1.printStackTrace();}}}return result;}

当然对于整个流程来说还有其他的优化方法,比如将保存的图片格式压缩比例都进行调整,在不影响识别的前提下,将图片进行处理,这样既能节省cpu时间又能节省内存开销。

如果大家有其他更好的方案,欢迎提出。

android 图片二维码识别和保存(二)相关推荐

  1. Halcon二维码识别,多二维码识别,附代码及常见算子解释

    前言 二维码作为机器视觉常见的检测场景,常常用于产品类型检测,MES系统对接等场景,不同于常见的halcon图像处理流程,二维码识别不需要做图像分割便可以很快的完成二维码区域定位与二维码检测.这里对常 ...

  2. 识别二维码、并保存二维码链接至csv文件

    识别二维码 上一篇博文已经制作了一个二维码,现在是如何把它识别出来,(当然识别出来的是一个链接,并把它保存起来) 使用的工具是pycharm 识别二维码无非就是调用open cv 来识别,代码大同小异 ...

  3. vue实现二维码识别功能 读取二维码内容

    我们可以访问 https://www.wwei.cn/?from=bdtp 在输入框中输入文本 然后 点击生成二维码 他就会给我生成一个对应信息的二维码图片 我们可以复制到本地 打开vue项目 先引入 ...

  4. 【二维码识别】灰度+二值化+校正二维码生成与识别【含GUI Matlab源码 635期】

    ⛄一.二维码生成与识别简介 如今,移动互联网技术日新月异,随着5G时代的来临,广泛应用于数据处理过程中的二维码信息安全日益成为人们越来越关注的问题.以QR码为代表的二维码,以其在信息存储.传输和识别技 ...

  5. python实现二维码识别_python实现二维码、条形码识别

    环境: python 3.7 Win7 依赖包安装: pip install pillow pip install opencv-python pip install opencv-contrib-p ...

  6. Python基于pyzbar、opencv、pyqt5库,实现二维码识别 gui 应用程序开发

    二维码组成结构基本介绍 二维码识别背景介绍 视觉的方法可以用来估计位置和姿态.最容易想到的是在目标上布置多个容易识别的特征,这样使用opencv相机标定和.相机畸变矫正.轮廓提取.solvepnp来获 ...

  7. 第47章 QR-Decoder-OV5640二维码识别—零死角玩转STM32-F429系列

    第47章     QR-Decoder-OV5640二维码识别 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.y ...

  8. 第47章 QR-Decoder-OV5640二维码识别—零死角玩转STM32-F429系列

    第47章     QR-Decoder-OV5640二维码识别 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.y ...

  9. python实现二维码识别软件_用 Python 生成 识别二维码

    说到二维码大家一定不陌生,可以说现在二维码几乎渗透到了我们生活的各个角落,举例来说吧,我们到超市商场购物时扫描二维码付款,我们出行时乘坐公交地铁扫描二维码进站,我们到菜鸟驿站取件时扫描二维码取件,如果 ...

最新文章

  1. angular $resource参数占位符释疑
  2. html5 svg组态图,绘制SVG内容到Canvas的HTML5应用
  3. 解释器模式 Interpreter
  4. 3d打印英语文献_DMD 激光熔覆3D打印机型设计在仿真计算中的经验分享
  5. 26 Socket Addressing and Client Socket Programming
  6. python索引右往左_左手用R右手Python系列5——数据切片与索引
  7. 在spring管理的类的要注意问题
  8. ITIL4讲解: 组合管理
  9. Readyboost技术U 盘变内存,加速电脑(只针对Windows 7和Vista系统)
  10. 批量替换Excel表格中非空的单元格的内容
  11. Vue组件的抽离和封装
  12. Introduction to BouncyCastle with Java
  13. 7 类与对象,方法和函数的定义和使用,返回值,权限修饰符 public default protected private(重点)
  14. zotero 使用小技巧
  15. 统计一行字符串中单词的个数
  16. Praat将连续录制的声音文件切成小单位文件
  17. 【yum】yum “Status code: 404 for http:”错误
  18. 【Web技术】1091- 跨浏览器窗口 ,7种方式,你还知道几种呢?
  19. 移动端网站的几大好处
  20. 英语语法的介词省略现象

热门文章

  1. SQL 左连接(left join) 排序 分页 中遇到的未按理想状态排序分页的解决方案
  2. 获取基目录,它由程序集冲突解决程序用来探测程序集
  3. 微信快速开发框架(六)-- 微信快速开发框架(WXPP QuickFramework)V2.0版本上线--源码已更新至github...
  4. 开源电子工作套件 Arduino Start Kit 登场
  5. 【星辰傀儡线·命运环·卷二 尘埃】 5 困惑
  6. CKfinder 和 CKEditor 在 ASP.NET 下的配置
  7. 实现不同域(Domain)之间的数据交换(转)
  8. Docker与FastDFS的安装命令及使用
  9. NPM酷库:dotenv,从文件加载环境变量
  10. Java 8新特性探究(6):泛型的目标类型推断