NSArray *filters = [CIFilter filterNamesInCategory:kCICategoryBuiltIn];
NSLog(@"%@",filters);
//二維碼過濾器
CIFilter *qrImageFilter = [CIFilter filterWithName:@"CIQRCodeGenerator"];
//設(shè)置過濾器默認(rèn)屬性
[qrImageFilter setDefaults];
//將字符串轉(zhuǎn)換成 NSdata (雖然二維碼本質(zhì)上是 字符串,但是這里需要轉(zhuǎn)換,不轉(zhuǎn)換就崩潰)
NSData *qrImageData = [@"看看這是什么,shenm" dataUsingEncoding:NSUTF8StringEncoding];
//我們可以打印,看過濾器的 輸入屬性.這樣我們才知道給誰賦值
NSLog(@"%@",qrImageFilter.inputKeys);
/*
inputMessage,? ? ? ? //二維碼輸入信息
inputCorrectionLevel //二維碼錯(cuò)誤的等級(jí),就是容錯(cuò)率
*/
//設(shè)置過濾器的輸入值? ,KVC賦值
[qrImageFilter setValue:qrImageData forKey:@"inputMessage"];
//取出圖片
CIImage *qrImage = [qrImageFilter outputImage];
//但是圖片 發(fā)現(xiàn)有的小 (27,27),我們需要放大..我們進(jìn)去CIImage 內(nèi)部看屬性
qrImage = [qrImage imageByApplyingTransform:CGAffineTransformMakeScale(10, 10)];
//轉(zhuǎn)成 UI的 類型
UIImage *qrUIImage = [UIImage imageWithCIImage:qrImage];
//----------------給 二維碼 中間增加一個(gè) 自定義圖片----------------
//開啟繪圖,獲取圖形上下文? (上下文的大小,就是二維碼的大小)
UIGraphicsBeginImageContext(qrUIImage.size);
//把二維碼圖片畫上去. (這里是以,圖形上下文,左上角為 (0,0)點(diǎn))
[qrUIImage drawInRect:CGRectMake(0, 0, qrUIImage.size.width, qrUIImage.size.height)];
//再把小圖片畫上去
UIImage *sImage = [UIImage imageNamed:@"麥稻首頁4"];
//
//? ? UIImageView *sImageView = [[UIImageView alloc]initWithFrame:CGRectMake(50, 50, 60, 60)];
//? ? [self.view addSubview:sImageView];
//? ? sImageView.image = sImage;
//? ? // 類似于clip,使用masksToBounds陰影效果無效
//? ? sImageView.layer.masksToBounds = YES;
//? ? //圖層的圓角半徑
//? ? sImageView.layer.cornerRadius = 50;
CGFloat sImageW = 100;
CGFloat sImageH= sImageW;
CGFloat sImageX = (qrUIImage.size.width - sImageW) * 0.5;
CGFloat sImgaeY = (qrUIImage.size.height - sImageH) * 0.5;
[sImage drawInRect:CGRectMake(sImageX, sImgaeY, sImageW, sImageH)];
//獲取當(dāng)前畫得的這張圖片
UIImage *finalyImage = UIGraphicsGetImageFromCurrentImageContext();
//關(guān)閉圖形上下文
UIGraphicsEndImageContext();
//設(shè)置圖片
self.erweimaImageView.image = finalyImage;