• iOS开发--二维码的生成


    一.需要包含头文件

    #import <CoreImage/CoreImage.h>

    二.示例代码 -- 以下生成的二维码不够清晰 如图:

     1 - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
     2     
     3     // 0.导入头文件#import <CoreImage/CoreImage.h>
     4     
     5     // 1.创建过滤器 -- 苹果没有将这个字符封装成常量
     6     CIFilter *filter = [CIFilter filterWithName:@"CIQRCodeGenerator"];
     7     
     8     // 2.过滤器恢复默认设置
     9     [filter setDefaults];
    10     
    11     // 3.给过滤器添加数据(正则表达式/帐号和密码) -- 通过KVC设置过滤器,只能设置NSData类型
    12     NSString *dataString = @"http://www.baidu.com";
    13     NSData *data = [dataString dataUsingEncoding:NSUTF8StringEncoding];
    14     [filter setValue:data forKeyPath:@"inputMessage"];
    15     
    16     // 4.获取输出的二维码
    17     CIImage *outputImage = [filter outputImage];
    18     
    19     // 5.显示二维码
    20     self.imageView.image = [UIImage imageWithCIImage:outputImage];
    21 }

    三.调用下面方法可以生成清晰的二维码图片,用的时候也可以给UIImage添加一个分类.这里没有抽取分类.如图:

     1 /**
     2  *  根据CIImage生成指定大小的UIImage
     3  *
     4  *  @param image CIImage
     5  *  @param size  图片宽度
     6  */
     7 - (UIImage *)createNonInterpolatedUIImageFormCIImage:(CIImage *)image withSize:(CGFloat) size
     8 {
     9     CGRect extent = CGRectIntegral(image.extent);
    10     CGFloat scale = MIN(size/CGRectGetWidth(extent), size/CGRectGetHeight(extent));
    11     
    12     // 1.创建bitmap;
    13     size_t width = CGRectGetWidth(extent) * scale;
    14     size_t height = CGRectGetHeight(extent) * scale;
    15     CGColorSpaceRef cs = CGColorSpaceCreateDeviceGray();
    16     CGContextRef bitmapRef = CGBitmapContextCreate(nil, width, height, 8, 0, cs, (CGBitmapInfo)kCGImageAlphaNone);
    17     CIContext *context = [CIContext contextWithOptions:nil];
    18     CGImageRef bitmapImage = [context createCGImage:image fromRect:extent];
    19     CGContextSetInterpolationQuality(bitmapRef, kCGInterpolationNone);
    20     CGContextScaleCTM(bitmapRef, scale, scale);
    21     CGContextDrawImage(bitmapRef, extent, bitmapImage);
    22     
    23     // 2.保存bitmap到图片
    24     CGImageRef scaledImage = CGBitmapContextCreateImage(bitmapRef);
    25     CGContextRelease(bitmapRef);
    26     CGImageRelease(bitmapImage);
    27     return [UIImage imageWithCGImage:scaledImage];
    28 }
  • 相关阅读:
    java实现第六届蓝桥杯牌型整数
    java实现第六届蓝桥杯牌型整数
    java实现第六届蓝桥杯牌型整数
    java实现第六届蓝桥杯牌型整数
    java实现第六届蓝桥杯牌型整数
    java实现第六届蓝桥杯九数组分数
    java实现第六届蓝桥杯九数组分数
    java实现第六届蓝桥杯九数组分数
    java实现第六届蓝桥杯九数组分数
    Spring boot(4)-应用打包部署
  • 原文地址:https://www.cnblogs.com/gchlcc/p/5585482.html
Copyright © 2020-2023  润新知