【iOS】一个方法读取图片中的二维码信息

来源:互联网 发布:小米usb共享网络win10 编辑:程序博客网 时间:2024/05/21 15:06

前面的文章中介绍了扫面二维码和条形码《【iOS】AVFoundation架构下的原生二维码和条形码扫描

也介绍了二维码的生成以及制作一个带logo的二维码

《【iOS】CoreImage原生二维码生成(一)

【iOS】CoreImage原生二维码生成(二)一个方法生成带logo的二维码

在加上现在这一篇,关于二维码的基本完了。但是想理解原理,知道CoreImage还需要大量的实践和阅读,加油!↖(^ω^)↗

读取图片中得二维码,我是这么一个思路,往方法里面传一个图片对象,这个方法就自动读取这个图片信息。

界面:


#pragma mark - 读取图片中的二维码/** *  读取图片中的二维码 * *  @param image 图片 * *  @return 图片中的二维码数据集合 CIQRCodeFeature对象 */+ (NSArray *)readQRCodeFromImage:(UIImage *)image{    // 创建一个CIImage对象    CIImage *ciImage = [[CIImage alloc] initWithCGImage:image.CGImage options:nil];    CIContext *context = [CIContext contextWithOptions:@{kCIContextUseSoftwareRenderer : @(YES)}]; // 软件渲染    CIDetector *detector = [CIDetector detectorOfType:CIDetectorTypeQRCode context:context options:@{CIDetectorAccuracy : CIDetectorAccuracyHigh}];// 二维码识别    // 注意这里的CIDetectorTypeQRCode    NSArray *features = [detector featuresInImage:ciImage];    NSLog(@"features = %@",features); // 识别后的结果集    for (CIQRCodeFeature *feature in features) {        NSLog(@"msg = %@",feature.messageString); // 打印二维码中的信息    }    return features;}
结合上一篇《【iOS】CoreImage原生二维码生成(二)一个方法生成带logo的二维码》中的代码:

////  ViewController.m//  HGDQQRCode////  Created by zhuming on 16/3/9.//  Copyright © 2016年 zhuming. All rights reserved.//#import "ViewController.h"#import "HGDQQRCodeView.h"@interface ViewController ()@property (weak, nonatomic) IBOutlet UIView *QRView;@property (weak, nonatomic) IBOutlet UILabel *msglabel;@end@implementation ViewController- (void)viewDidLoad {    [super viewDidLoad];    [self.msglabel sizeToFit];    // Do any additional setup after loading the view, typically from a nib.}/** *  生成二维码 * *  @param sender sender description */- (IBAction)btnClick:(id)sender {    [HGDQQRCodeView creatQRCodeWithURLString:@"http://blog.csdn.net/zhuming3834" superView:self.QRView logoImage:[UIImage imageNamed:@"logo"] logoImageSize:CGSizeMake(40, 40) logoImageWithCornerRadius:0];}/** *  读取图片中的二维码 * *  @param sender sender description */- (IBAction)readBtnClick:(id)sender {    // 截图    UIImage *im = [HGDQQRCodeView screenShotFormView:self.view];    // 读取图片中的二维码    NSArray *array = [HGDQQRCodeView readQRCodeFromImage:im];    // 显示二维码中的信息    NSMutableString *str = [[NSMutableString alloc] init];    [array enumerateObjectsUsingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {        CIQRCodeFeature *temp = (CIQRCodeFeature *)obj;        [str appendFormat:@"地址:%@",temp.messageString];    }];    self.msglabel.text = str;}- (void)didReceiveMemoryWarning {    [super didReceiveMemoryWarning];    // Dispose of any resources that can be recreated.}@end
截图方法:

/** *  截图 * *  @param view 需要截取的视图 * *  @return 截图 图片 */+ (UIImage *)screenShotFormView:(UIView *)view{    UIGraphicsBeginImageContextWithOptions(view.bounds.size, YES, [UIScreen mainScreen].scale);    [view.layer renderInContext:UIGraphicsGetCurrentContext()];    UIImage *img = UIGraphicsGetImageFromCurrentImageContext();    UIGraphicsEndImageContext();    return img;}
生成的结果截图:



github代码地址:请点击我。


0 0
原创粉丝点击