生成二维码
// 生成二维码
- (UIImage *)generateQRCode:(NSString *)code size:(CGSize)size {
NSData *codeData = [code dataUsingEncoding:NSUTF8StringEncoding];
//生成
CIFilter *qrFilter = [CIFilter filterWithName:@"CIQRCodeGenerator"];
[qrFilter setValue:codeData forKey:@"inputMessage"];
[qrFilter setValue:@"H" forKey:@"inputCorrectionLevel"];
//上色
CIFilter *colorFilter = [CIFilter filterWithName:@"CIFalseColor"
keysAndValues:
@"inputImage",qrFilter.outputImage,
@"inputColor0",[CIColor colorWithCGColor:[UIColor blackColor].CGColor],
@"inputColor1",[CIColor colorWithCGColor:[UIColor whiteColor].CGColor],
nil];
CIImage *qrImage = colorFilter.outputImage;
//绘制
CGImageRef cgImage = [[CIContext contextWithOptions:nil] createCGImage:qrImage fromRect:qrImage.extent];
UIGraphicsBeginImageContext(size);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetInterpolationQuality(context, kCGInterpolationNone);
CGContextScaleCTM(context, 1.0, -1.0);
CGContextDrawImage(context, CGContextGetClipBoundingBox(context), cgImage);
UIImage *codeImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
CGImageRelease(cgImage);
return codeImage;
}
生成条形码
// 生成条形码
- (UIImage *)generateBarCode:(NSString *)code size:(CGSize)size {
// 注意生成条形码的编码方式
NSData *codeData = [code dataUsingEncoding: NSASCIIStringEncoding];
CIFilter *filter = [CIFilter filterWithName:@"CICode128BarcodeGenerator"];
[filter setValue:codeData forKey:@"inputMessage"];
// 设置生成的条形码的上,下,左,右的margins的值
[filter setValue:[NSNumber numberWithInteger:0] forKey:@"inputQuietSpace"];
CIImage *qrImage = filter.outputImage;
//绘制
CGImageRef cgImage = [[CIContext contextWithOptions:nil] createCGImage:qrImage fromRect:qrImage.extent];
UIGraphicsBeginImageContext(size);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetInterpolationQuality(context, kCGInterpolationNone);
CGContextScaleCTM(context, 1.0, -1.0);
CGContextDrawImage(context, CGContextGetClipBoundingBox(context), cgImage);
UIImage *codeImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
CGImageRelease(cgImage);
return codeImage;
}