美文网首页收藏ios
iOS 生成二维码和条形码

iOS 生成二维码和条形码

作者: 蒋伟_iOS | 来源:发表于2019-06-30 16:44 被阅读4次

使用 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;
    
}
二维码.jpeg

二、生成中心带图片二维码

在第一步的基础上 ,在图片中心 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;
    
    
}
生成中心带图片二维码.jpeg

三、生成条形码

新建 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;
    
}
生成条形码.jpeg

Demo地址:

https://github.com/muyan091115/QRCode-BarCode

相关文章

网友评论

    本文标题:iOS 生成二维码和条形码

    本文链接:https://www.haomeiwen.com/subject/khybcctx.html