美文网首页iOS卖瓜大队
iOS 使用滤镜工具生成二维码

iOS 使用滤镜工具生成二维码

作者: BiBiMan | 来源:发表于2020-08-07 12:50 被阅读0次

最近手上的项目要添加扫码功能,用的阿里第三方的扫码工具,在调试过程中突然心血来潮想到巩固下二维码生成的技术代码,所以下面我们来使用原生的滤镜工具生成二维码。

首先引入CoreImage库

#import <CoreImage/CoreImage.h>

生成二维码需要使用到库中的CIFilter类(滤镜工具类),CIFilter可以生成除二维码以外的其他图形码,包括条形码、PDF等。

根据需要获取生成器所支持的图形列表:

NSArray *filterNames = [CIFilter filterNamesInCategory:kCICategoryGenerator];

NSLog(@"名称列表:%@",filterNames);

这里打印的日志如下:

名称列表:(

    CIAttributedTextImageGenerator,

    CIAztecCodeGenerator,

    CIBarcodeGenerator,

    CICheckerboardGenerator,

    CICode128BarcodeGenerator,

    CIConstantColorGenerator,

    CILenticularHaloGenerator,

    CIMeshGenerator,

    CIPDF417BarcodeGenerator,

    CIQRCodeGenerator,

    CIRandomGenerator,

    CIRoundedRectangleGenerator,

    CIStarShineGenerator,

    CIStripesGenerator,

    CISunbeamsGenerator,

    CITextImageGenerator

)

CIQRCodeGenerator才是生成二维码的所需要的。

然后可以编写核心代码,生成需要的二维码:

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

[filter setDefaults];

//这里是二维码信息

NSString*contentString =@"这里是二维码信息";

NSData *contentData = [contentString dataUsingEncoding:NSUTF8StringEncoding];

[filter setValue:contentData forKey:@"inputMessage"];

CIImage*outputImg = [filter outputImage];

UIImage *img = [UIImage imageWithCIImage:outputImg];//模糊的二维码图形

到此需要的二维码图片生成完毕,但生成的二维码图片过于模糊,所以需要进一步处理使图片更清晰。

    //图片大小
    CGSize size = CGSizeMake(200, 200);

    CGRectextent =CGRectIntegral(outputImg.extent);

    CGFloat scale = MIN(size.width/CGRectGetWidth(extent), size.height/CGRectGetHeight(extent));

    //创建bitmap;

    size_twidth =CGRectGetWidth(extent) * scale;

    size_theight =CGRectGetHeight(extent) * scale;

    CGColorSpaceRef cs = CGColorSpaceCreateDeviceGray();

    CGContextRef bitmapRef = CGBitmapContextCreate(nil, width, height, 8, 0, cs, (CGBitmapInfo)kCGImageAlphaNone);

    CIContext *context = [CIContext contextWithOptions:nil];

    CGImageRefbitmapImage = [context createCGImage:outputImg fromRect:extent];

    CGContextSetInterpolationQuality(bitmapRef, kCGInterpolationNone);

    CGContextScaleCTM(bitmapRef, scale, scale);

    CGContextDrawImage(bitmapRef, extent, bitmapImage);

    //保存bitmap到图片

    CGImageRef scaledImage = CGBitmapContextCreateImage(bitmapRef);

    CGContextRelease(bitmapRef);

    CGImageRelease(bitmapImage);

    UIImage *img = [UIImage imageWithCGImage:scaledImage];//清晰的二维码图形

最后得到的就是清晰的二维码图片。

相关文章

  • iOS 生成二维码

    使用CIFilter来生成二维码图像 iOS常用滤镜参考 https://developer.apple.com/...

  • iOS 使用滤镜工具生成二维码

    最近手上的项目要添加扫码功能,用的阿里第三方的扫码工具,在调试过程中突然心血来潮想到巩固下二维码生成的技术代码,所...

  • 二维码

    filter 滤镜 使用二维码要使用这个框架 生成二维码 #import"ViewController.h" #i...

  • 简单二维码的生成

    1.iOS7以后,开始集成了二维码的生成和读取功能2.生成二维码的步骤:导入CoreImage框架通过滤镜CIFi...

  • 一键生成微信二维码

    引言 生成二维码的步骤导入CoreImage框架通过滤镜CIFilter生成二维码 生成普通的二维码 /** 生成...

  • iOS 生成二维码

    iOS7之后,可以使用原生的CIFilter创建二维码。 一、生成二维码 首先是二维码的生成,使用CIFilter...

  • 【iOS】二维码生成及定制

    【iOS】二维码生成及定制 【iOS】二维码生成及定制

  • 二维码

    二维码的生成 生成二维码 //1. 实例化二维码滤镜CIFilter*filter = [CIFilterfilt...

  • iOS中生成二维码

    生成二维码 1 导入CoreImage框架 #import 2 通过滤镜CIFilter生成二维码 /** * 生...

  • # QRCode二维码

    生成二维码图片 根据一个字符创生成一个二维码的图片 步骤和技术使用第一步:使用到滤镜(CIFilter类),其中在...

网友评论

    本文标题:iOS 使用滤镜工具生成二维码

    本文链接:https://www.haomeiwen.com/subject/tghfdktx.html