#pragma mark -- 生成二維碼
+ (instancetype)creatImageWithQrCodeText:(NSString *)qrT WithCreatSize:(CGFloat)size{
? ? CIFilter *filter = [CIFilter filterWithName:@"CIQRCodeGenerator"];
? ? [filter setDefaults];
? ? NSData *filterData = [qrT dataUsingEncoding:NSUTF8StringEncoding];
? ? [filter setValue:filterData forKeyPath:@"inputMessage"];
? ? CIImage *outPutImage = [filter outputImage];
? ? return [self filterTheQrCode:outPutImage WithSize:size];
}
+ (UIImage *)filterTheQrCode:(CIImage *)ciImage WithSize:(CGFloat)size{
? ? CGRect extent = CGRectIntegral(ciImage.extent);//獲取圖片的規(guī)格
? ? CGFloat imageWidth = CGRectGetWidth(extent);
? ? CGFloat imageHeight = CGRectGetHeight(extent);
? ? CGFloat scale = MIN(size/imageWidth, size/imageHeight);//計算像素比例
? ? size_t width = imageWidth*scale;
? ? size_t height = imageHeight*scale;
? ? CGColorSpaceRef csr = CGColorSpaceCreateDeviceGray();//創(chuàng)建一個顏色空間
? ? CGContextRef bitMapRef = CGBitmapContextCreate(nil, width, height, 8, 0, csr, kCGImageAlphaNone);//繪制空間的規(guī)格
? ? CIContext *context = [CIContext contextWithOptions:nil];//獲取創(chuàng)建的顏色空間
? ? CGImageRef bitmapImage = [context createCGImage:ciImage fromRect:extent];//獲取要編輯的過濾圖
? ? CGContextSetInterpolationQuality(bitMapRef, kCGInterpolationNone);//連接顏色空間,CGInterpolationQuality表示插入的方式
? ? CGContextScaleCTM(bitMapRef, scale, scale);//更改過濾圖的坐標
? ? CGContextDrawImage(bitMapRef, extent, bitmapImage);//重新繪制過濾圖
? ? // 2.保存bitmap到圖片
? ? CGImageRef scaledImage = CGBitmapContextCreateImage(bitMapRef);//按照繪制空間的規(guī)格生成新圖片
? ? CGContextRelease(bitMapRef);
? ? CGImageRelease(bitmapImage);
? ? return [UIImage imageWithCGImage:scaledImage];
? }