星空网 > 软件开发 > 操作系统

IOS 二维码生成

 这篇博客将会介绍二维码的生成。

 由于没有什么东西值得长篇大论的,所以这里我就通过代码的实现介绍二维码。

第一部分

第一部分是二维码的简单生成没有其他重点介绍。

效果图

IOS 二维码生成images/loading.gif' data-original="http://images2015.cnblogs.com/blog/913387/201604/913387-20160412124256973-198328551.png" />

代码部分

//// ViewController.m// CX 二维码生成//// Created by ma c on 16/4/12.// Copyright © 2016年 bjsxt. All rights reserved.//#import "ViewController.h"#import <CoreImage/CoreImage.h>@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad {  [super viewDidLoad];  }- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{    //创建过滤器  CIFilter * filter = [CIFilter filterWithName:@"CIQRCodeGenerator"];  //恢复默认设置  [filter setDefaults];  //给过滤器添加数据  NSString * str = @"旭宝爱吃鱼";//这里的文本可以是URL  NSData * data = [str dataUsingEncoding:NSUTF8StringEncoding];  [filter setValue:data forKey:@"inputMessage"];  //输出获取的二维码   CIImage * image = [filter outputImage];  //显示二维码  UIImageView * imageView = [[UIImageView alloc]initWithFrame:CGRectMake(20, 20, 100, 100)];  imageView.image = [UIImage imageWithCIImage:image];  [self.view addSubview:imageView];  }@end

虽然说很简单,但是值得注意的是原生框架中的方法生成的二维码是CI的因此我们在显示之前要处理一下。

扫描第一部分出来的是一段文字,当然按照注释如果你加入url也可以弹出网站。

如果仔细观察不难发现,二位码的清晰度并不高。我在下面介绍一下使其清晰度变高的方法。

第二部分

第二部分介绍的是使二维码的清晰度变高的方法。

效果图

IOS 二维码生成
代码部分

//// ViewController.m// CX 二维码生成//// Created by ma c on 16/4/12.// Copyright © 2016年 bjsxt. All rights reserved.//#import "ViewController.h"#import <CoreImage/CoreImage.h>@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad {  [super viewDidLoad];  }- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{    //创建过滤器  CIFilter * filter = [CIFilter filterWithName:@"CIQRCodeGenerator"];  //恢复默认设置  [filter setDefaults];  //给过滤器添加数据  NSString * str = @"旭宝爱吃鱼";//这里的文本可以是URL  NSData * data = [str dataUsingEncoding:NSUTF8StringEncoding];  [filter setValue:data forKey:@"inputMessage"];  //输出获取的二维码   CIImage * image = [filter outputImage];  //显示二维码  UIImageView * imageView = [[UIImageView alloc]initWithFrame:CGRectMake(20, 20, 100, 100)];  imageView.image = [self createNonInterpolatedUIImageFormCIImage:image withSize:200];  [self.view addSubview:imageView];}/** * 根据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];}@end

值得注意的是这个方法可以变为类别。

这些弄好之后我们要想一想很多时候二维码中间是有图片的该怎么做呢???

很简单只要自己弄张图片覆盖在二维码中间即可(注意图片尺寸掌握好)

 




原标题:IOS 二维码生成

关键词:IOS

IOS
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

印尼fba:https://www.goluckyvip.com/tag/47865.html
印尼tiktok shop:https://www.goluckyvip.com/tag/47866.html
印尼TikTok小黄车:https://www.goluckyvip.com/tag/47867.html
印尼海外仓:https://www.goluckyvip.com/tag/47868.html
印尼海外仓合作商:https://www.goluckyvip.com/tag/47869.html
新零售中心:https://www.goluckyvip.com/tag/4787.html
建水县住宿推荐:https://www.vstour.cn/a/410233.html
豪华游轮上海到深圳 游轮豪华游深圳出发:https://www.vstour.cn/a/410234.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流