欢迎来到天天文库
浏览记录
ID:1791141
大小:50.05 KB
页数:5页
时间:2017-11-13
《二维码之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
此文档下载收益归作者所有