iOS:二维码的生成

简介:

 所谓的二维码就是一个图片,只不过在iOS需要借用<CoreImage/CoreImage.h>来实现,  并且二维码图片是通过CIImage来转成UIImage的。具体步骤如下:

复制代码
// 1.创建一个滤镜
CIFilter *filter = [CIFilter filterWithName:@"CIQRCodeGenerator"];
    
// 2.设置默认的属性
[filter setDefaults];
    
// 3.给滤镜设置数据
NSString *string = @"http://www.baidu.com";
NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding];
[filter setValue:data forKeyPath:@"inputMessage"];
    
// 4.获取出输出的数据
CIImage *outputImage = [filter outputImage];
    
// 5.设置到imageView上面
// self.imageView.image = [UIImage imageWithCIImage:outputImage];
   self.imageView.image = [self createNonInterpolatedUIImageFormCIImage:outputImage withSize:200];

第5步骤中有一方法是为了得到高清的二维码图片。所用的方法
/**
 *  根据CIImage生成指定大小的UIImage
 *
 *  @param image CIImage
 *  @param size  图片宽度
 */
- (UIImage *)createNonInterpolatedUIImageFormCIImage:(CIImage *)image withSize:(CGFloat) size
{
    CGRect extent = CGRectIntegral(image.extent);
    CGFloat scale = MIN(size/CGRectGetWidth(extent), size/CGRectGetHeight(extent));
    
    // 1.创建bitmap;
    size_t width = CGRectGetWidth(extent) * scale;
    size_t height = CGRectGetHeight(extent) * scale;
    CGColorSpaceRef cs = CGColorSpaceCreateDeviceGray();
    CGContextRef bitmapRef = CGBitmapContextCreate(nil, width, height, 8, 0, cs, (CGBitmapInfo)kCGImageAlphaNone);
    CIContext *context = [CIContext contextWithOptions:nil];
    CGImageRef bitmapImage = [context createCGImage:image fromRect: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/XYQ-208910/p/5121838.html ,如需转载请自行联系原作者
相关文章
|
缓存 iOS开发 Perl
iOS蓝牙打印小票(打印发票二维码的指令)
iOS蓝牙打印小票(打印发票二维码的指令)
587 0
iOS蓝牙打印小票(打印发票二维码的指令)
|
iOS开发
iOS - QRCode 二维码
1、QRCode 在 iOS7 以前,在 iOS 中实现二维码和条形码扫描,我们所知的有,两大开源组件 ZBar 与 ZXing。iOS7 之后可以利用系统原生 API 生成二维码, iOS8 之后可以生成条形码, 系统默认生成的颜色是黑色。
2774 0
|
开发框架 数据安全/隐私保护 Android开发
iOS二维码的生成和扫码详细介绍(手把手教)
iOS二维码的生成和扫码详细介绍(手把手教)
688 0
|
移动开发 Android开发 iOS开发
iOS WebView长按网页里的图片识别图片中的二维码和保存图片
iOS WebView长按网页里的图片识别图片中的二维码和保存图片
iOS WebView长按网页里的图片识别图片中的二维码和保存图片
|
iOS开发
IOS创建二维码
IOS创建二维码
88 0
|
存储 iOS开发
iOS扫描二维码
iOS扫描二维码
341 0
iOS扫描二维码
|
编译器 Android开发 iOS开发
iOS应用程序打包ipa转化为二维码
iOS应用程序打包ipa转化为二维码
850 0
iOS应用程序打包ipa转化为二维码
|
移动开发 前端开发 Android开发
印象最深的一个bug-----ios 微信内置浏览器微信二维码长按无法识别
ios 微信内置浏览器微信二维码长按无法识别
1153 0
印象最深的一个bug-----ios 微信内置浏览器微信二维码长按无法识别
|
开发工具 iOS开发
IOS 使用 ZbarSDK 二维码扫描
IOS 使用 ZbarSDK 二维码扫描
255 0
IOS 使用 ZbarSDK 二维码扫描
|
API 开发者 iOS开发
iOS7使用原生API进行二维码和条形码的扫描
iOS7使用原生API进行二维码和条形码的扫描
144 0