使用 CIFilter类 的功能可以创建二维码和条形码
一、生成二维码:
新建 CIFilter 对象 : CIQRCodeGenerator
CIFilter *filter = [CIFilter filterWithName:@"CIQRCodeGenerator"];
设置 inputMessage :二微码内容
设置 inputCorrectionLevel:容错率
生成CIImage,转成 UIImage 展示
- (IBAction)creatQRCode:(id)sender {
NSString *message = @"https://github.com/muyan091115/QRCode-BarCode";
NSData *inputData = [message dataUsingEncoding:NSUTF8StringEncoding];
CIFilter *filter = [CIFilter filterWithName:@"CIQRCodeGenerator"];
[filter setValue:inputData forKey:@"inputMessage"];
//设置高容错率
[filter setValue:@"H" forKey:@"inputCorrectionLevel"];
CIImage *ciImage = filter.outputImage;
ciImage = [ciImage imageByApplyingTransform:CGAffineTransformScale(CGAffineTransformIdentity, 10.0, 10.0)];
UIImage *image = [UIImage imageWithCIImage:ciImage];
self.imageView.image = image;
}

二、生成中心带图片二维码
在第一步的基础上 ,在图片中心 drawInRect 小图。
- (IBAction)creatCenterImageQRCode:(id)sender {
NSString *message = @"https://github.com/muyan091115/QRCode-BarCode";
NSData *inputData = [message dataUsingEncoding:NSUTF8StringEncoding];
CIFilter *filter = [CIFilter filterWithName:@"CIQRCodeGenerator"];
[filter setValue:inputData forKey:@"inputMessage"];
//设置高容错率
[filter setValue:@"H" forKey:@"inputCorrectionLevel"];
CIImage *ciImage = filter.outputImage;
ciImage = [ciImage imageByApplyingTransform:CGAffineTransformScale(CGAffineTransformIdentity, 10.0, 10.0)];
UIImage *backImage = [UIImage imageWithCIImage:ciImage];
UIGraphicsBeginImageContext(backImage.size);
[backImage drawInRect:CGRectMake(0, 0, backImage.size.width, backImage.size.height)];
double centerImageWH = backImage.size.width * 0.2;
UIImage *centerImage = [UIImage imageNamed:@"github"];
[centerImage drawInRect:CGRectMake((backImage.size.width - centerImageWH)*0.5, (backImage.size.height - centerImageWH)*0.5, centerImageWH, centerImageWH)];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
self.imageView.image = image;
}

三、生成条形码
新建 CIFilter 对象 : CIQRCodeGenerator
CIFilter *filter = [CIFilter filterWithName:@"CICode128BarcodeGenerator"];
设置 inputMessage :二微码内容
设置 inputCorrectionLevel:容错率
生成CIImage,转成 UIImage 展示
- (IBAction)creatBarCode:(id)sender {
CIFilter *filter = [CIFilter filterWithName:@"CICode128BarcodeGenerator"];
[filter setDefaults];
NSString *string = @"9787111213826";
NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding];
[filter setValue:data forKey:@"inputMessage"];
CIImage *outputImage = [filter outputImage];
UIImage* image = [UIImage imageWithCIImage:outputImage scale:10.0 orientation:UIImageOrientationUp];
self.imageView.image = image;
}

网友评论