iOS开发---原生高清二维码生成
2016-02-24 17:26
471 查看
1.导入
2.创建一个
3.具体代码实现
`- (void)viewDidLoad {
[super viewDidLoad];
}
// 根据CIImage生成指定大小的UIImage
- (UIImage )createNonInterpolatedUIImageFormCIImage:(CIImage )image withSize:(CGFloat) size {
}
`
4.最终实现的效果如下:
#import <CoreImage/CoreImage.h>
2.创建一个
@property (nonatomic, strong)UIImageView *imageView;
3.具体代码实现
`- (void)viewDidLoad {
[super viewDidLoad];
UIImageView *imageView = [[UIImageView alloc] init]; imageView.backgroundColor = [UIColor whiteColor]; [self.view addSubview:imageView]; [imageView mas_makeConstraints:^(MASConstraintMaker *make) { make.size.mas_equalTo(CGSizeMake(150, 150)); make.center.mas_equalTo(self.view); }]; // 实例化二维码滤镜 CIFilter *filter = [CIFilter filterWithName:@"CIQRCodeGenerator"]; // 恢复滤镜的默认属性 [filter setDefaults]; NSString *phoneNum =[YNUser currentUser].sa_mobile; // 将字符串转换成NSdata NSData *data = [phoneNum dataUsingEncoding:NSUTF8StringEncoding]; // 通过KVO设置滤镜, 传入data, 将来滤镜就知道要通过传入的数据生成二维码 [filter setValue:data forKey:@"inputMessage"]; // 设置 filter 容错等级 [filter setValue:@"M" forKey:@"inputCorrectionLevel"]; // 生成二维码 CIImage *outputImage = [filter outputImage]; imageView.image=[self createNonInterpolatedUIImageFormCIImage:outputImage withSize:200.0];
}
// 根据CIImage生成指定大小的UIImage
- (UIImage )createNonInterpolatedUIImageFormCIImage:(CIImage )image withSize:(CGFloat) size {
CGRect extent = CGRectIntegral(image.extent); CGFloat scale = MIN(size/CGRectGetWidth(extent), size/CGRectGetHeight(extent)); // 创建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); // 保存bitmap到图片 CGImageRef scaledImage = CGBitmapContextCreateImage(bitmapRef); CGContextRelease(bitmapRef); CGImageRelease(bitmapImage); return [UIImage imageWithCGImage:scaledImage];
}
`
4.最终实现的效果如下:
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- Android编程UI设计之GridView和ImageView的用法
- 基于Android实现随手指移动的ImageView
- 批处理制作二维码生成器
- Android中ImageView用法实例分析
- jquery插件qrcode在线生成二维码
- JavaScript生成二维码图片小结
- php制作中间带自己定义图片二维码的方法
- zbar解码二维码和条形码示例
- php使用qr生成二维码的示例分享
- php实现扫描二维码根据浏览器类型访问不同下载地址
- PHP微信开发之二维码生成类
- 讲解iOS开发中基本的定位功能实现
- js判断客户端是iOS还是Android等移动终端的方法