-(void)touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event
{
// 1.創(chuàng)建濾鏡
CIFilter*filter = [CIFilterfilterWithName:@"CIQRCodeGenerator"];
// 2.清空濾鏡(還原默認設置,因為濾鏡有可能保存上一次的設置)
[filtersetDefaults];
// 3.創(chuàng)建二維碼需要保存的數(shù)據(jù)
NSData*data = [@"IOS開發(fā)很牛逼"dataUsingEncoding:NSUTF8StringEncoding];
// 4.設置數(shù)據(jù)(KVC)
[filtersetValue:dataforKey:@"inputMessage"];
// 5.生成二維碼,獲取生成后的二維碼圖片
CIImage*image = [filteroutputImage];
self.QRCImage.image= [selfcreateNonInterpolatedUIImageFormCIImage:imagewithSize:400];
}
/**
*根據(jù)CIImage生成指定大小的UIImage
*
*@paramimage CIImage
*@paramsize圖片寬度
*/
- (UIImage*)createNonInterpolatedUIImageFormCIImage:(CIImage*)image withSize:(CGFloat) size
{
CGRectextent =CGRectIntegral(image.extent);
CGFloatscale =MIN(size/CGRectGetWidth(extent), size/CGRectGetHeight(extent));
// 1.創(chuàng)建bitmap;
size_twidth =CGRectGetWidth(extent) * scale;
size_theight =CGRectGetHeight(extent) * scale;
CGColorSpaceRefcs =CGColorSpaceCreateDeviceGray();
CGContextRefbitmapRef =CGBitmapContextCreate(nil, width, height,8,0, cs, (CGBitmapInfo)kCGImageAlphaNone);
CIContext*context = [CIContextcontextWithOptions:nil];
CGImageRefbitmapImage = [contextcreateCGImage:imagefromRect:extent];
CGContextSetInterpolationQuality(bitmapRef,kCGInterpolationNone);
CGContextScaleCTM(bitmapRef, scale, scale);
CGContextDrawImage(bitmapRef, extent, bitmapImage);
// 2.保存bitmap到圖片
CGImageRefscaledImage =CGBitmapContextCreateImage(bitmapRef);
CGContextRelease(bitmapRef);
CGImageRelease(bitmapImage);
return[UIImageimageWithCGImage:scaledImage];
}