ios 生成二維碼

? ? // 1.創(chuàng)建過濾器

? ? CIFilter *filter = [CIFilter filterWithName:@"CIQRCodeGenerator"];

? ? // 2.恢復默認

? ? [filtersetDefaults];

? ? // 3.給過濾器添加數(shù)據(jù)

? ? NSString *dataString = @"http://www.baidu.com";

? ? NSData *data = [dataString dataUsingEncoding:NSUTF8StringEncoding];

? ? [filtersetValue:dataforKeyPath:@"inputMessage"];

? ? // 4.獲取輸出的二維碼

? ? CIImage*outputImage = [filteroutputImage];

? ? // 5.將CIImage轉(zhuǎn)換成UIImage,并放大顯示

? ? self.imageView.image = [self createNonInterpolatedUIImageFormCIImage:outputImage withSize:200];

*************************************************************

上面代碼生成的二維碼圖片比較虛,下面這個方法重繪二維碼,讓二維碼更清晰

*************************************************************

/**

?*? 根據(jù)CIImage生成指定大小的UIImage

?*

?*? @param image CIImage

?*? @param size 圖片寬度

?*/

- (UIImage*)createNonInterpolatedUIImageFormCIImage:(CIImage*)image withSize:(CGFloat) size

{

? ? CGRect extent = 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;

? ? CGColorSpaceRef cs = CGColorSpaceCreateDeviceGray();

? ? CGContextRef bitmapRef = CGBitmapContextCreate(nil, width, height, 8, 0, cs, (CGBitmapInfo)kCGImageAlphaNone);

? ? CIContext *context = [CIContext contextWithOptions:nil];

? ? CGImageRefbitmapImage = [contextcreateCGImage:imagefromRect:extent];

? ? CGContextSetInterpolationQuality(bitmapRef, kCGInterpolationNone);

? ? CGContextScaleCTM(bitmapRef, scale, scale);

? ? CGContextDrawImage(bitmapRef, extent, bitmapImage);


? ? // 2.保存bitmap到圖片

? ? CGImageRef scaledImage = CGBitmapContextCreateImage(bitmapRef);

? ? CGContextRelease(bitmapRef);

? ? CGImageRelease(bitmapImage);

? ? return [UIImage imageWithCGImage:scaledImage];

}


原文鏈接:http://www.cnblogs.com/davidyff/p/5254578.html

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

友情鏈接更多精彩內(nèi)容