美文网首页
二维码生成、识别、扫描

二维码生成、识别、扫描

作者: Hyman0819 | 来源:发表于2016-10-23 20:42 被阅读33次

一、二维码生成

步骤:

  1. 创建一个imageView,并设置imageView的frame
  2. 创建CIFilter,filter的名字是@“CIQRCodeGenerator”二维码生产者
得到此名称的过滤器有如下值可以设置
    NSLog(@"allkeys === %@",filter.inputKeys);
    /*
     Key:
     inputImage
     inputColor0
     inputColor1
     */
  1. 设置value
  2. filter生成图片,完成。。。
代码如下:
#pragma mark - 二维码生成器
+(UIImage *)QRImageWithMessage:(NSString *)message size:(CGSize)size
{
    //1. 信息过滤器
    CIFilter *filter = [CIFilter filterWithName:@"CIQRCodeGenerator"];
    
    NSLog(@"allkeys === %@",filter.inputKeys);
    /*
     Key:
     inputImage
     inputColor0
     inputColor1
     */
    //2. 设置信息
    [filter setValue:[message dataUsingEncoding:4] forKey:@"inputMessage"];
    //3. 生成图片
    CIImage *ciImage = [filter outputImage];
    return [[UIImage imageWithCIImage:colorImage] imageFromContextWithSize:size];
}
设置图片的过滤色第一种方式:
    //4. 伪造色过滤器
    CIFilter *colorFilter = [CIFilter filterWithName:@"CIFalseColor"];
    
    NSLog(@"allkeys === %@",colorFilter.inputKeys);
    /*
     *注释:都是要闯进去的参数
     *allkeys = (
                 inputImage,
                 inputColor0,
                 inputColor1)
     */
    //5. 设置要添加颜色的图片
    [colorFilter setValue:ciImage forKey:@"inputImage"];
    //6. 设置颜色
    [colorFilter setValue:[CIColor colorWithCGColor:[UIColor redColor].CGColor] forKey:@"inputColor0"];
    //7. 设置背景颜色
    //[colorFilter setValue:[CIColor colorWithCGColor:[UIColor redColor].CGColor] forKey:@"inputColor1"];
    //8.生成图片
    CIImage *colorImage = [colorFilter outputImage];
设置图片的过滤色第二种方式:
#pragma mark - 处理成黑白照

    CIFilter *filter = [CIFilter filterWithName:@"CIColorMonochrome"];
    
    NSLog(@"===== %@",filter.inputKeys);
    /*
     *注释
     *allkeys = (
             inputImage,
             inputColor,
             inputIntensity) //光强度,一般不设置
     */
    [filter setValue:[CIImage imageWithCGImage:image.CGImage] forKey:@"inputImage"];
    
    [filter setValue:[CIColor colorWithCGColor:[UIColor whiteColor].CGColor] forKey:@"inputColor"];
    
//    [filter setValue:@(20) forKey:@"inputIntensity"];
    
    CIImage *ciimage = [filter outputImage];

    return [UIImage imageWithCIImage:ciimage];
   

二、二维码识别


三、二维码扫描

步骤:

1. 创建一个捕捉会话session

分步骤 | ...
----|------|----
添加一个捕捉设备:| AVCaptureDeviceInput
添加一个元数据输出代理: | <AVCaptureMetadataOutputObjectsDelegate>
兴趣范围 | rectOfInterest

2. 添加一个捕捉的视频预览层layer

分步骤 | ...
----|------|----
视频预览层| AVCaptureVideoPreviewLayer

3. 实现代理方法

分步骤 | ...
----|------|----
实现代理方法| - (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputMetadataObjects:(NSArray *)metadataObjects fromConnection:(AVCaptureConnection *)connection

以下是代理方法:

#pragma mark - AVCaptureMetadataOutputObjectsDelegate
/**
 *  当扫描成功后会触发
 *
 *  @param captureOutput   <#captureOutput description#>
 *  @param metadataObjects <#metadataObjects description#>
 *  @param connection      <#connection description#>
 */
- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputMetadataObjects:(NSArray *)metadataObjects fromConnection:(AVCaptureConnection *)connection
{
    if (metadataObjects.count == 0)
    {
        return;
    }
    //停止扫描
    [self stopRunning];
    //获取二维码信息
    AVMetadataMachineReadableCodeObject *object = metadataObjects.firstObject;
    //获取二维码数据
    NSString *value = object.stringValue;
    //url
    if ([value hasPrefix:@"https://"] || [value hasPrefix:@"http://"])
    {
        NSString *urlString = [value stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
        NSURL *url = [NSURL URLWithString:urlString];
        //用浏览器打开
        [[UIApplication sharedApplication] openURL:url];
    }
    //微信支付
    else if([value hasPrefix:@"weixinPay://"])
    {
        
    }
    //打开qq
    else if([value hasPrefix:@"mqq://"])
    {
        [[UIApplication sharedApplication] openURL:[NSURL URLWithString:value]];
    }
    else
    {
        [[[UIAlertView alloc] initWithTitle:@"扫描成功" message:value delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil] show];
    }
}

相关文章

网友评论

      本文标题:二维码生成、识别、扫描

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