美文网首页
iOS 在二维码中间加图片,改变二维码的颜色

iOS 在二维码中间加图片,改变二维码的颜色

作者: futur_zwl | 来源:发表于2017-08-14 14:18 被阅读0次

    项目中实现在对二维码的处理(记录)

    //coreImage框架初始二维码


    - (void)CreateCoreImage:(NSString *)codeStr{

    //1.生成coreImage框架中的滤镜来生产二维码

    CIFilter *Filter = [CIFilter filterWithName:@"CIQRCodeGenerator"];

    [Filter setDefaults];

    [Filter setValue:[codeStr dataUsingEncoding:NSUTF8StringEncoding] forKey:@"inputMessage"];

    //4.获取生成的图片

    CIImage *ciImg=Filter.outputImage;

    //放大ciImg,默认生产的图片很小

    //5.设置二维码的前景色和背景颜色

    CIFilter *colorFilter=[CIFilter filterWithName:@"CIFalseColor"];

    //5.1设置默认值

    [colorFilter setDefaults];

    [colorFilter setValue:ciImg forKey:@"inputImage"];

    [colorFilter setValue:[CIColor colorWithRed:0 green:0 blue:255] forKey:@"inputColor0"];

    [colorFilter setValue:[CIColor colorWithRed:1 green:1 blue:1] forKey:@"inputColor1"];

    //5.3获取生存的图片

    ciImg=colorFilter.outputImage;

    CGAffineTransform scale=CGAffineTransformMakeScale(10, 10);

    ciImg=[ciImg imageByApplyingTransform:scale];

    //    self.imgView.image=[UIImage imageWithCIImage:ciImg];

    //6.在中心增加一张图片

    UIImage *img=[UIImage imageWithCIImage:ciImg];

    //7.生存图片

    //7.1开启图形上下文

    UIGraphicsBeginImageContext(img.size);

    //7.2将二维码的图片画入

    //BSXPCMessage received error for message: Connection interrupted  why??

    //    [img drawInRect:CGRectMake(10, 10, img.size.width-20, img.size.height-20)];

    [img drawInRect:CGRectMake(0, 0, img.size.width, img.size.height)];

    //7.3在中心划入其他图片

    UIImage *centerImg=[UIImage imageNamed:@"shrad"];

    CGFloat centerW=70;

    CGFloat centerH=70;

    CGFloat centerX=(img.size.width-70)*0.5;

    CGFloat centerY=(img.size.height -70)*0.5;

    [centerImg drawInRect:CGRectMake(centerX, centerY, centerW, centerH)];

    //7.4获取绘制好的图片

    UIImage *finalImg=UIGraphicsGetImageFromCurrentImageContext();

    //7.5关闭图像上下文

    UIGraphicsEndImageContext();

    //设置图片

    _img.image = finalImg;

    _img.userInteractionEnabled = YES;

    //长按手势识别器

    UILongPressGestureRecognizer *pressGesture=[[UILongPressGestureRecognizer alloc]initWithTarget:self action:@selector(handleLongPress:)];

    [_img addGestureRecognizer:pressGesture];

    }


    //保存图片


    -(void)handleLongPress:(UILongPressGestureRecognizer *)gesture

    {

    if(gesture.state == UIGestureRecognizerStateBegan)

    {

    UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"提示" message:@"请选择" preferredStyle:UIAlertControllerStyleActionSheet];

    UIAlertAction *cancle = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction *_Nonnull action)

    {

    }];

    UIAlertAction *camera = [UIAlertAction actionWithTitle:@"保存图片到手机" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action)

    {

    UIImageWriteToSavedPhotosAlbum(_img.image, self, @selector(imageSavedToPhotosAlbum:didFinishSavingWithError:contextInfo:), nil);

    }];

    [alert addAction:cancle];

    [alert addAction:camera];

    [self presentViewController:alert animated:YES completion:nil];

    }

    }


    相关文章

      网友评论

          本文标题:iOS 在二维码中间加图片,改变二维码的颜色

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