iOS 生成的二维码在其他平台无法识别

标签 ios qr-code cifilter

我正在使用 CIFilter 提供的 CIQRCodeGenerator 过滤器生成二维码图像。图像生成良好,显示时我可以使用 AVCaptureSession 读取图像。但是,当我尝试使用不同的平台(Android、BlackBerry、iOS 6)扫描二维码时,它无法识别图像。根据 Apple 的文档,生成的图像符合 ISO/IEC 18004:2006 标准。问题是我需要符合 ISO 18004:2000 的东西吗?

这是我用来生成图像的代码:

NSData *stringData = [stringToEncode dataUsingEncoding:NSISOLatin1StringEncoding];

CIFilter *qrFilter = [CIFilter filterWithName:@"CIQRCodeGenerator"];

[qrFilter setValue:stringData forKey:@"inputMessage"];
[qrFilter setValue:@"M" forKey:@"inputCorrectionLevel"];

CIImage *qrImage = qrFilter.outputImage;

return [UIImage squareUIImageFromCIImage:qrImage withSize:size];

这是一个示例二维码:

sample QR code

有谁知道有没有一种方法可以使用CIFilter生成更普遍认可的QR码图像?我真的不想回去使用 ZXing。

谢谢!

最佳答案

我不确定微小的变化是否会产生影响,但这是我最近项目中的一个片段,它生成了一个二维码,该二维码在不到一秒的时间内从 iPad 摄像头成功扫描:

 CIFilter *filter = [CIFilter filterWithName:@"CIQRCodeGenerator"];

[filter setDefaults];

NSData *data = [accountNumber dataUsingEncoding:NSUTF8StringEncoding];
[filter setValue:data forKey:@"inputMessage"];

CIImage *outputImage = [filter outputImage];

CIContext *context = [CIContext contextWithOptions:nil];
CGImageRef cgImage = [context createCGImage:outputImage
                                   fromRect:[outputImage extent]];

UIImage *barcode = [UIImage imageWithCGImage:cgImage
                                     scale:1.
                               orientation:UIImageOrientationUp];

// EDIT: 
CFRelease(cgImage);

关于iOS 生成的二维码在其他平台无法识别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26169063/

相关文章:

ios - EKReminder 没有设置日历

ios - 如何在一个 git repo 中拥有多个 pod

php - QR条码图像返回文本

php - 安全地使用二维码

ios - 如何在 AVCaptureSession 中为视频的每一帧应用过滤器?

swift - iOS 10 打破自定义 CIFilter

iphone - 属性不更新

objective-c - iOS、objective C - 没有 XIB 和 MVC 的应用程序的好例子

android - 如何为 Android Market 和 App Store 制作二维码

ios - 如何使用 Depth Api 去除肖像背景?