iphone开发/IOS开发编程二维码解码详解

写这篇日志的目的是把这近一个星期以来,学到的二维码for iphone的编程,记录下来。现在开源免费的二维码库有两种,就是ZBar,ZXing。ZXing主要是为安卓服务设计的,ZBar则对于iphone开发来说更好一些,貌似库也小一些。最主要的原因还是ZBar开发文档好找一些。我之前是没接触过二维码,当时我老大跟我说二维码,我说这个可能要研究下,他很爽快,说,我给你时间,然后还给我了库,就是ZXing,因为安卓的已经弄出来了。然后我就心平气和的弄,第二天的时候把那个摄像头扫描的弄出来了,在这个过程中,有点问题就是引入库的时候出现了各种问题,源自于本人不细心。
[url] http://dale.leepood.com/tag/zxing/[/url] 看的是这篇文章,照着那个做,网上其他文章也差不多就那样,相识度百分之九十九。
第一步:下载最新的库,我下的是zxing-2.0
第二步:点击项目名称,右键,Add file to code..,不拷贝。
第三步:还是项目名称里面操作,不是加入进来的zxing库,添加

ZXingWidget
第四步:导入那几个库,libZXingWidget.a导入之后是红色的,我也不知道怎么解决,但是运行起来好像是没问题。深圳那个库自带的例子里面根本就没加这个文件
第五步: ”Header Search Paths“其他的两个名字很像的也别管。还是项目名称的main project-----Build Settings。找到之后添加路径,最好的办法就是打开终端,在zxing库中找到两个文件夹,路径是zxing/iphone/ZXingWidget/Classes和zxing/cpp/core/src/,然后把文件夹Classes和src拖入终端得到完整的路径,我的是/Users/chenshuangchao/Desktop/zxing-2.0/iphone/ZXingWidget/classes
第六步:加入那两个头文件,创建对象,就可以用了。
由于我的粗心,造成的问题有:
1.出现一堆C++的文件格式错误,.

[img]http://photo.blog.sina.com.cn/showpic.html#blogid=68661bd801016fir&url=http://s9.sinaimg.cn/orignal/68661bd8gc1f0ce0ecf98[/img]

解决办法,就是把涉及到解码的文件全部都由.m文件改成.mm文件,直接点击文件名进行修改。
2.那两个头文件不能用
[img]http://photo.blog.sina.com.cn/showpic.html#blogid=68661bd801016fir&url=http://s13.sinaimg.cn/orignal/68661bd8gc1f0d1d1300c[/img]

问题在于导入库不成功,解决办法按照上面第五步。

如果不知道怎么用可以看zxing/iphone/ZXingWidget/scantest其实就是创建ZXingWidgetController对象,然后实现那个委托就行。

做到这里的时候才明白老大要我做的Demo是要打开本地图片,就是打开相册里面的图片,然后扫描选中的图片,百度一下,发现ZXing这方面资料很少,开发文档也没找到,而且在找资料的过程中发现了ZBar库有这个功能,我就开始尝试用ZBar库解决问题。
在下载ZBar库之后,发现它自带有开发文档,这下心里有底了,打开开发文档,就是那个Documentation.html(之前自己看了那自带的四个例子,感觉不爽,没怎么研究,而且那个实现文件libzbar.a也打不开,懒得去看了,所以就看开发文档)。
ZBar的使用比ZXing要简单的多,正如网上的,大致也就几步:
1. 下载ZBarSDK 添加到工程 ,这个最好copy
2. 添加需要的framework
3. #import "ZBarSDK.h" 添加协议 ZBarReaderDelegate
4.然后设置一个按钮点击事件
ZBarReaderViewController *reader = [ZBarReaderViewController new];
reader.readerDelegate = self;
ZBarImageScanner *scanner = reader.scanner;
[scanner setSymbology: ZBAR_I25
config: ZBAR_CFG_ENABLE
to: 0];
[self presentModalViewController: reader
animated: YES];
[reader release];


- (void) imagePickerController: (UIImagePickerController*) reader
didFinishPickingMediaWithInfo: (NSDictionary*) info
{
id<NSFastEnumeration> results =
[info objectForKey: ZBarReaderControllerResults];
ZBarSymbol *symbol = nil;
for(symbol in results)
break;
NSLog(@"===%@",symbol.data);

self.tfOrderNumber.text = symbol.data;

[reader dismissModalViewControllerAnimated: YES];
}
上面代码应该是实现摄像头扫描的,打开本地文件扫描相册图片的代码是(见下面图片,本人试过的,为求速度,直接截图了,公司装的虚拟机,没办法);

[img]http://photo.blog.sina.com.cn/showpic.html#blogid=68661bd801016fir&url=http://s11.sinaimg.cn/orignal/68661bd8gc1f0deaa9baa[/img]
这个例子做好了,最后发现项目要做的效果是给个链接,然后从链接处下载一张二维码图片,然后解析出二维码图片,返回二维码图片解析的结果,那么现在做的打开本地文件的还是不行,怎么办呢。百度,谷歌一番,英文水平不好,疼哭。。。不仅网上关于iphone 二维码打开文件的很少,像我这样要解析指定地址图片的二维码几乎没有。那我就只能自己看开发文档了,又因为一个小问题,弄了一天,终于搞定了。使我成败明白这完全在于细节,就因为哥去上了趟厕所,途中碰到了一美女,然后心情不大好,再回来仔细一看开发文档和我的代码,原来在不经意间将调用ZBarReadController里面的方法写成了调用ZBarImageScanner里面的方法,这一下心情更好了,果断一气呵成,最好把整个模块给弄出来了。
扫描指定PATH的二维码图片不需要用到委托,直接一个方法就成,代码如下

[img]http://photo.blog.sina.com.cn/showpic.html#blogid=68661bd801016fir&url=http://s5.sinaimg.cn/orignal/68661bd8gc1f0e298ccb4[/img]
写完,主要还是研究那个开发文档,网上的资料关于iphone的确实很少,有点坑爹啊,不想写了,这个代码我试了下,不能解决中文乱码问题,我在网上下了25张二维码进行解析测试,一半以上没问题,有几张不能解析,有几张有乱码,我觉得这是正常的,因为二维码来自日本,生成二维码的时候采用的编码可能关系到解码,日文当做中文解码就有问题,据说C语言好像能解决乱码问题。因为我在服务器上取的都能解析,所以 我就不没做了,网速不好,源代码文件不传了

原文路径:[url]http://blog.sina.com.cn/s/blog_68661bd801016fir.html[/url]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值