Skip to content

zhuming3834/HGDQQRCode

Repository files navigation

HGDQQRCode

##iOS原生的二维码生成和读取图片中的二维码 效果:

以前写过一篇关于苹果原生的二维码和条形码扫描的博客《【iOS】AVFoundation架构下的原生二维码和条形码扫描》
代码地址 ##生成二维码 1.首先在项目中加入两个文件

HGDQQRCodeView.h
HGDQQRCodeView.m

2.在需要使用的地方加入头文件

#import "HGDQQRCodeView.h"

3.调用生成二维码的方法

/**
 *  生成带logo的二维码
 *  二维码和logo都是正方形的
 *  @param urlString     二维码中的链接
 *  @param logoImage     二维码中的logo
 *  @param logoImageSize logo的大小
 *  @param cornerRadius  logo的圆角值大小
 *
 *  @return 生成的二维码
 */
+ (HGDQQRCodeView *)creatQRCodeWithURLString:(NSString *)urlString superView:(UIView *)superView logoImage:(UIImage *)logoImage logoImageSize:(CGSize)logoImageSize logoImageWithCornerRadius:(CGFloat)cornerRadius;

eg:

[HGDQQRCodeView creatQRCodeWithURLString:@"http://blog.csdn.net/zhuming3834" superView:self.QRView logoImage:[UIImage imageNamed:@"logo"] logoImageSize:CGSizeMake(40, 40) logoImageWithCornerRadius:0];

效果就是上面图片中生成的二维码。 生成不带logo的二维码时把参数logoImage传个nil就可以。 ##读取图片中的二维码 读取图片中的二维码返回的是一个数组的集合,图片中有多少个识别出来的二维码数组里面就会有几个元素,每个元素是一个CIQRCodeFeature对象。

/**
 *  读取图片中的二维码
 *
 *  @param image 图片
 *
 *  @return 图片中的二维码数据集合 CIQRCodeFeature对象
 */
+ (NSArray *)readQRCodeFromImage:(UIImage *)image;

实际使用 在使用之前,使用可一个截屏的方法,截取屏幕,生成一个UIImage的对象作为参数传递给方法:

+ (NSArray *)readQRCodeFromImage:(UIImage *)image;

截屏方法的实现:

/**
 *  截图
 *
 *  @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;
}

最后就是显示识别出来二维码中的url链接

 // 截图
    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];
    }];

关于iOS下原生的二维码的生成和识别可以看这两篇博客,里面有详细的说明。
《【iOS】CoreImage原生二维码生成(一)》
《【iOS】CoreImage原生二维码生成(二)一个方法生成带logo的二维码》
《【iOS】一个方法读取图片中的二维码信息》

Releases

No releases published

Packages

No packages published