- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
二维码之zxing二维码解析图片资源
二维码之zxing二维码解析图片资源
前面讲了如何利用zxing生成二维码图像以及仿照新浪微博方式生成二维码。接下来,就要开始谈到如何利用zxing解析二维码图像。
zxing针对不同开发平台,都给出了解析二维码的例子,我这里只聊聊关于android系统的解析。
对于android手机来说,二维码图像获取方式有拍照扫描,以及读取本地图片资源。无论是哪种方式,解析过程的核心内容基本是一样的。关于手机拍照扫描这块,由于要涉及到很多问题要讲,所以我打算把这块放在下篇文章再细致讲解,这次只讲如何对图片进行解析。
首先,和生成二维码一样,我们要告诉系统解析二维码的设置参数。这里我选择了支持主流的三类方式,其中一种为一维码(条形码)。设置解析的字符位UTF8。如果不设置字符解析方式,它会自己去识别内容,然后自己判断该用哪种方式。
看一下设置参数的代码:
MultiFormatReader multiFormatReader = new MultiFormatReader();
// 解码的参数
HashtableDecodeHintType, Object hints = new HashtableDecodeHintType, Object(
2);
// 可以解析的编码类型
VectorBarcodeFormat decodeFormats = new VectorBarcodeFormat();
if (decodeFormats == null || decodeFormats.isEmpty()) {
decodeFormats = new VectorBarcodeFormat();
// 这里设置可扫描的类型,我这里选择了都支持
decodeFormats.addAll(DecodeFormatManager.ONE_D_FORMATS);
decodeFormats.addAll(DecodeFormatManager.QR_CODE_FORMATS);
decodeFormats.addAll(DecodeFormatManager.DATA_MATRIX_FORMATS);
}
hints.put(DecodeHintType.POSSIBLE_FORMATS, decodeFormats);
// 设置继续的字符编码格式为UTF8
// hints.put(DecodeHintType.CHARACTER_SET, UTF8);
// 设置解析配置参数
multiFormatReader.setHints(hints);
补一句:zxing源码中对UTF8的定义字符串内容不是UTF-8,而是UTF8。
private static final String UTF8 = UTF8;
再来就是解析部分:
// 开始对图像资源解码
Result rawResult = null;
try {
rawResult = multiFormatReader
.decodeWithState(new BinaryBitmap(new HybridBinarizer(
new BitmapLuminanceSource(BitmapFactory
.decodeResource(getResources(),
R.drawable.weibo)))));
} catch (NotFoundException e) {
e.printStackTrace();
}
按照zxing的解码规则,需要传入一个LuminanceSource类的对象,最后就会得到解析结果result对象,也就是解码后的信息类。这里唯一需要自己实现的就是BitmapLuminanceSource类。
BitmapLuminanceSource继承自LuminanceSource这个抽象类,需要实现它的构造方法,并重载getMatrix()和getRow(int y, byte[] row)方法。其构造方法中需要传入宽高,这两个值指的就是图片的宽和高。getMatrix()方法会返回一个byte数组,这个数组就是图片的像素数组。getRow(int y, byte[] row)如字面的意义,就是得到图片像素数组的一行。其中的y就是需要的哪一个行的像素数组。
先看构造方法:
protected BitmapLuminanceSource(Bitmap bitmap) {
super(bitmap.getWidth(), bitmap.getHeight());
// 首先
您可能关注的文档
- VC++第4章对话框与常用控件.ppt
- VB练习3.doc
- What’s the relationship between the nature and human.ppt
- WI-S-001手动化镍金线作业指导书.ppt
- win7系统下录制电脑内部声音.doc
- Windows操作系统克隆方法.doc
- windows操作系统快捷键.doc
- WinQSB教程-线性规划.ppt
- wolfe选址模型概案.doc
- WinXP 快捷键.doc
- 4.1 陆地水体及其关系 课件高二上学期地理中图版(2019)选择性必修一.pptx
- 混凝土结构与砌体结构设计习题集 .pdf
- 统编版语文四年级下册 22.古诗三首 课件(共50张PPT).pptx
- 青海2024行测笔试真题及答案 .pdf
- 2.1 充分发挥市场在资源配置中的决定性作用 课件-高中政治统编版必修二经济与社会.pptx
- 27.巨人的花园 课件(共58张PPT).pptx
- 统编版语文一年级下册5 树和喜鹊 第1课时 课件(共37张PPT).pptx
- 2.1 充分发挥市场在资源配置中的决定性作用 课件政治一轮复习统编版必修二经济与社会.pptx
- 贵港市平南县2024届小升初考试语文试卷含答案 .pdf
- 小学期末考试质量分析 .pdf
最近下载
- 2025年高考地理二轮复习非选择题强化训练(课件).pptx VIP
- (二模)2025年广州市普通高中毕业班综合测试(二)数学试卷(含答案详解).pdf
- 14J938 抗爆、泄爆图集标准.docx VIP
- 降低CRRT治疗非计划下机率.pptx VIP
- 《中国心力衰竭诊断和治疗指南2024》解读(下).pptx
- 《预检分诊》课件.pptx VIP
- 2024年河南省政务服务办事员职业技能竞赛考试题库-下(判断、简答题汇总).docx
- 2025年部编版语文六年级毕业复习知识点.pdf VIP
- 2025年政务服务办事员技能大赛理论考试题库600题(含答案).docx
- 14J938抗爆泄爆图集标准.docx VIP
文档评论(0)