版权声明:本文为博主原创文章,未经博主允许不得转载。 https://cloud.tencent.com/developer/article/1337682
在iOS7之后我们可以使用苹果自带的CIFilter这个类生成二维码,我们可以通过为UIImage这个类添加一个分类来实现该功能。代码:
{
if (!info) {
return nil;
}
NSData *strData = info dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:NO;
//创建二维码滤镜
CIFilter *qrFilter = CIFilter filterWithName:@"CIQRCodeGenerator";
qrFilter setValue:strData forKey:@"inputMessage";
qrFilter setValue:@"H" forKey:@"inputCorrectionLevel";
CIImage *qrImage = qrFilter.outputImage;
//颜色滤镜
CIFilter *colorFilter = CIFilter filterWithName:@"CIFalseColor";
colorFilter setDefaults;
colorFilter setValue:qrImage forKey:kCIInputImageKey;
// [colorFilter setValue:CIColor colorWithRed:0 green:0 blue:0 forKey:@"inputColor0"];
// undefinedcolorFilter setValue:CIColor colorWithRed:1 green:1 blue:1 forKey:@"inputColor1"];
CIImage *colorImage = colorFilter.outputImage;
//返回二维码
CGFloat scale = width/31;
UIImage *codeImage = [UIImage imageWithCIImage:colorImage imageByApplyingTransform:CGAffineTransformMakeScale(scale, scale)];
return codeImage;
}
在iOS8之后我们还可以使用CIFilter这个类来生成条形码,我们同样可以通过为UIImage这个类添加分类的方法来实现该功能。代码:
{
// 1.将字符串转换成NSData
NSData *data = info dataUsingEncoding:NSUTF8StringEncoding;
// 2.创建条形码滤镜
CIFilter *filter = CIFilter filterWithName:@"CICode128BarcodeGenerator";
// 3.恢复滤镜的默认属性
filter setDefaults;
// 4.设置滤镜inputMessage数据
filter setValue:data forKey:@"inputMessage";
// 5.获得滤镜输出的图像
CIImage *urlImage = filter outputImage;
// 6.将CIImage 转换为UIImage
UIImage *image = UIImage imageWithCIImage:urlImage;
return image;
}