iOS 如何在二維碼中間加圖片,如何改變二維碼的顏色

- (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];
}


}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容