iOS使用CIFilter生成二维码

2020-01-21 03:44:38王冬梅


imageView.image = [UIImage imageWithCIImage:transformedImage];

2 应用示例

下面,我们就做一个如下图所示的二维码生成器:

iOS,生成二维码,CIFilter生成二维码

其中主要实现的功能有:

    生成和删除二维码。 通过滑动条对二维码图像进行缩放。 将二维码保存到相册。

2.1 创建项目

打开 Xcode ,创建一个新的项目( FileNewProject.. .),选择 iOS 一栏下的 Application 中的 Single View Application 模版,然后点击 Next ,填写项目选项。在 Product Name 中填写 QRCodeGeneratorDemo ,选择 Objective-C 语言,点击 Nex t,选择文件位置,并单击 Create 创建项目。

iOS,生成二维码,CIFilter生成二维码

2.2 构建界面

打开 Main.storyboard 文件,在当前控制器中嵌入导航控制器,并添加标题 QR Code Generator :

iOS,生成二维码,CIFilter生成二维码

在视图控制器中添加文本框、按钮、图像视图等,布局如下:

iOS,生成二维码,CIFilter生成二维码

其中各元素及作用:

    Text Field:用于输入想要转换为二维码的数据内容,包括文本或URL字符串。 Button:在这里具有双重作用,用于生成和清除二维码。 Image View:用于显示生成的二维码图像。 Slider:用来缩放生成的二维码图像。

打开辅助编辑器,将storyboard中的元素连接到代码中:

iOS,生成二维码,CIFilter生成二维码

2.3 添加代码

2.3.1 生成二维码图像

由于使用CIFilter对象生成的二维码图像将是一个CIImage对象,所以需要先在 ViewController.m 文件的接口部分声明一个CIImage对象的属性:


@property (strong, nonatomic) CIImage *qrcodeImage;

然后在实现部分添加 generateQRCodeImage 方法及代码:


- (void)generateQRCodeImage
{
  NSData *data = [self.textField.text dataUsingEncoding:NSISOLatin1StringEncoding allowLossyConversion:NO];
  
  // 创建并设置CIFilter对象
  CIFilter *filter = [CIFilter filterWithName:@"CIQRCodeGenerator"];
  [filter setValue:data forKey:@"inputMessage"];
  [filter setValue:@"Q" forKey:@"inputCorrectionLevel"];
  
  // 获取生成的CIImage对象
  self.qrcodeImage = filter.outputImage;
  
  // 转换成UIImage对象,并显示在图像视图中
  self.imageView.image = [UIImage imageWithCIImage:self.qrcodeImage];
}