二维码之zxing二维码解析图片资源

二维码之zxing二维码解析图片资源

ID:1791141

大小:50.05 KB

页数:5页

时间:2017-11-13

二维码之zxing二维码解析图片资源_第1页
二维码之zxing二维码解析图片资源_第2页
二维码之zxing二维码解析图片资源_第3页
二维码之zxing二维码解析图片资源_第4页
二维码之zxing二维码解析图片资源_第5页
资源描述:

《二维码之zxing二维码解析图片资源》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、二维码之zxing二维码解析图片资源前面讲了如何利用zxing生成二维码图像以及仿照新浪微博方式生成二维码。接下来,就要开始谈到如何利用zxing解析二维码图像。zxing针对不同开发平台,都给出了解析二维码的例子,我这里只聊聊关于android系统的解析。对于android手机来说,二维码图像获取方式有拍照扫描,以及读取本地图片资源。无论是哪种方式,解析过程的核心内容基本是一样的。关于手机拍照扫描这块,由于要涉及到很多问题要讲,所以我打算把这块放在下篇文章再细致讲解,这次只讲如何对图片进行解析。首先,和生成二维码一样,我们要告诉系统解析二维码的设

2、置参数。这里我选择了支持主流的三类方式,其中一种为一维码(条形码)。设置解析的字符位UTF8。如果不设置字符解析方式,它会自己去识别内容,然后自己判断该用哪种方式。看一下设置参数的代码:MultiFormatReadermultiFormatReader=newMultiFormatReader();//解码的参数Hashtablehints=newHashtable(2);//可以解析的编码类型VectordecodeForm

3、ats=newVector();if(decodeFormats==null

4、

5、decodeFormats.isEmpty()){decodeFormats=newVector();//这里设置可扫描的类型,我这里选择了都支持decodeFormats.addAll(DecodeFormatManager.ONE_D_FORMATS);decodeFormats.addAll(DecodeFormatManager.QR_CODE_FORMATS);decodeFormats.addAll

6、(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。privatestaticfinalStringUT

7、F8="UTF8";再来就是解析部分://开始对图像资源解码ResultrawResult=null;try{rawResult=multiFormatReader.decodeWithState(newBinaryBitmap(newHybridBinarizer(newBitmapLuminanceSource(BitmapFactory.decodeResource(getResources(),R.drawable.weibo)))));}catch(NotFoundExceptione){e.printStackTrace();}按照zx

8、ing的解码规则,需要传入一个LuminanceSource类的对象,最后就会得到解析结果result对象,也就是解码后的信息类。这里唯一需要自己实现的就是BitmapLuminanceSource类。BitmapLuminanceSource继承自LuminanceSource这个抽象类,需要实现它的构造方法,并重载getMatrix()和getRow(inty,byte[]row)方法。其构造方法中需要传入宽高,这两个值指的就是图片的宽和高。getMatrix()方法会返回一个byte数组,这个数组就是图片的像素数组。getRow(inty,b

9、yte[]row)如字面的意义,就是得到图片像素数组的一行。其中的y就是需要的哪一个行的像素数组。先看构造方法:protectedBitmapLuminanceSource(Bitmapbitmap){super(bitmap.getWidth(),bitmap.getHeight());//首先,要取得该图片的像素数组内容int[]data=newint[bitmap.getWidth()*bitmap.getHeight()];this.bitmapPixels=newbyte[bitmap.getWidth()*bitmap.getHeigh

10、t()];bitmap.getPixels(data,0,getWidth(),0,0,getWidth(),getHei

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。