专栏首页岑志军的专栏iOS系统生成二维码

iOS系统生成二维码

// 1. 创建一个二维码滤镜实例(CIFilter)
    CIFilter *filter = [CIFilter filterWithName:@"CIQRCodeGenerator"];
    // 滤镜恢复默认设置
    [filter setDefaults];

    // 2. 给滤镜添加数据
    NSString *string = @"594589850445580904903";
    NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding];
    // 使用KVC的方式给filter赋值
    [filter setValue:data forKeyPath:@"inputMessage"];

    // 3. 生成二维码
    CIImage *image = [filter outputImage];

    // 4. 显示二维码
    self.imageView.image = [self createNonInterpolatedUIImageFormCIImage:image withSize:80];
#pragma mark - 将模糊图片转换成高清图

- (UIImage *)createNonInterpolatedUIImageFormCIImage:(CIImage *)image withSize:(CGFloat) size {

    CGRect extent = CGRectIntegral(image.extent);
    CGFloat scale = MIN(size/CGRectGetWidth(extent), size/CGRectGetHeight(extent));

    // 1.创建bitmap;
    size_t width = CGRectGetWidth(extent) * scale;
    size_t height = CGRectGetHeight(extent) * scale;
    CGColorSpaceRef cs = CGColorSpaceCreateDeviceGray();
    CGContextRef bitmapRef = CGBitmapContextCreate(nil, width, height, 8, 0, cs, (CGBitmapInfo)kCGImageAlphaNone);
    CIContext *context = [CIContext contextWithOptions:nil];
    CGImageRef bitmapImage = [context createCGImage:image fromRect:extent];
    CGContextSetInterpolationQuality(bitmapRef, kCGInterpolationNone);
    CGContextScaleCTM(bitmapRef, scale, scale);
    CGContextDrawImage(bitmapRef, extent, bitmapImage);

    // 2.保存bitmap到图片
    CGImageRef scaledImage = CGBitmapContextCreateImage(bitmapRef);
    CGContextRelease(bitmapRef);
    CGImageRelease(bitmapImage);
    return [UIImage imageWithCGImage:scaledImage];
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • iOS UILabel设置中划线不能包含中文

    czjwarrior
  • (2)NSNumber及Tagged Pointer

    czjwarrior
  • 使用Cocoapods创建私有库

    czjwarrior
  • go 数据库相关

    创建db后并不需要自己去使用db.Close()去关闭,虽然提供了这样关闭方法但是完全不需要使用。

    solate
  • 问题:单片机软件仿真和实际运行速度不一样?

    如图,问题大概就是说初学单片机,用软件仿真出来的程序,在开发板上运行的效果比仿真的快,晶振都是一样的12M。还问到一个1T模式和12T模式的区别?

    单片机技术宅
  • Flask入门第三天

    py3study
  • 初学单片机的误区

    寄存器不用全部记住,更不能死记硬背,小代玩单片机多年,还是只记住了最常用的几个寄存器的名称,具体的位设置的什么,还是没记住。在编程时需要配置寄存器的时候,可以上...

    单片机技术宅
  • HDU 1398 Square Coins(母函数 模板改动)

    用户2965768
  • HDU 1028 Ignatius and the Princess III(母函数)

    用户2965768

扫码关注云+社区

领取腾讯云代金券