首先网上搜索了一些相册读取二维码的东西,比如使用zxing获取,http://code4app.com/ios/ZXing-Demo/515561f76803fa5e77000002,但是这个demo其实非常老了,
第一,需要修改其中的一个编译出错代码代码(很简单,类似,就是可变和不可变的关系),
第二,还需要让程序支持64位系统,但是类库本身是不支持64位的,只好去放弃!
后来,我去找github上找了zbar,但是这个更加古老啊,整个库还停留在4年前,唉,花了一些时间后只好作罢,后来找到唐巧大神的博客,http://blog.devtang.com/blog/2012/12/23/use-zxing-library/,恩,是觉得挺好,但是,嘻嘻,没找到好的东西啊,都是多少年前的博客了啊!!!唉,伤不起啊,
最后只在github上找到了一个一直更新的zxingOBJC ,哈哈,这个东西就一直在更新,没办法,貌似二维码已经被苹果公司逼到了死角,所以才只有这一个在更新了吧,https://github.com/TheLevelUp/ZXingObjC 终于还是找到了,最后使用了这段代码
<!-- lang: cpp -->
CGImageRef imageToDecode; // Given a CGImage in which we are looking for barcodes
ZXLuminanceSource source = [[[ZXCGImageLuminanceSource alloc] initWithCGImage:imageToDecode] autorelease];
ZXBinaryBitmap bitmap = [ZXBinaryBitmap binaryBitmapWithBinarizer:[ZXHybridBinarizer binarizerWithSource:source]];
NSError *error = nil;
// There are a number of hints we can give to the reader, including
// possible formats, allowed lengths, and the string encoding.
ZXDecodeHints *hints = [ZXDecodeHints hints];
ZXMultiFormatReader reader = [ZXMultiFormatReader reader];
ZXResult result = [reader decode:bitmap
hints:hints
error:&error];
if (result) {
// The coded result as a string. The raw data can be accessed with
// result.rawBytes and result.length.
NSString *contents = result.text;
// The barcode format, such as a QR code or UPC-A
ZXBarcodeFormat format = result.barcodeFormat;
} else {
// Use error to determine why we didn‘t get a result, such as a barcode
// not being found, an invalid checksum, or a format inconsistency.
}
打开相册的方法就省略了哈!
按照作者的用法,我将库导入,然后完成了demo,哈哈,其实挺简单的,记得先导入头文件哦!
恩,就是这段代码,当然,我们需要先将图片uiimage转换成为CGImageRef 哦!然后一切都OK了,问题得到解决,
下面是我的github上面的案例,希望对自己以及读者有帮助!
https://github.com/pyawkk/PYzxing
原文:http://my.oschina.net/panyong/blog/392469