原生二维码的生成
2016-10-18 11:31
127 查看
1.按照下图所示加入系统库
2.代码如下
@interfaceViewController ()
@property(nonatomic,strong)UIImageView
*imgView;
@end
@implementation ViewController
- (void)viewDidLoad {
[superviewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
self.imgView=[[UIImageViewalloc]initWithFrame:CGRectMake(100,100,
[UIScreenmainScreen].bounds.size.width/2.0,
[UIScreen mainScreen].bounds.size.width/2.0)];
[self.view addSubview:_imgView];
[self qrenCode];
}
-(void)qrenCode
{
//二维码滤镜
CIFilter *filter=[CIFilterfilterWithName:@"CIQRCodeGenerator"];
//恢复滤镜的默认属性
[filtersetDefaults];
//将字符串转换成NSData
NSData *data=[@"1234567890"dataUsingEncoding:NSUTF8StringEncoding];
//通过KVO设置滤镜inputmessage数据
[filtersetValue:data
forKey:@"inputMessage"];
//获得滤镜输出的图像
CIImage *outputImage=[filteroutputImage];
//将CIImage转换成UIImage,并放大显示
_imgView.image=[selfcreateNonInterpolatedUIImageFormCIImage:outputImagewithSize:100.0];
//如果还想加上阴影,就在ImageView的Layer上使用下面代码添加阴影
_imgView.layer.shadowOffset=CGSizeMake(0,0.5);//设置阴影的偏移量
_imgView.layer.shadowRadius=1;//设置阴影的半径
_imgView.layer.shadowColor=[UIColorblackColor].CGColor;//设置阴影的颜色为黑色
_imgView.layer.shadowOpacity=0.3;
}
//改变二维码大小
- (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 = [CIContextcontextWithOptions:nil];
CGImageRef bitmapImage = [contextcreateCGImage:image
fromRect:extent];
CGContextSetInterpolationQuality(bitmapRef,kCGInterpolationNone);
CGContextScaleCTM(bitmapRef, scale, scale);
CGContextDrawImage(bitmapRef, extent, bitmapImage);
// 保存bitmap到图片
CGImageRef scaledImage =CGBitmapContextCreateImage(bitmapRef);
CGContextRelease(bitmapRef);
CGImageRelease(bitmapImage);
return [UIImageimageWithCGImage:scaledImage];
}
3.如果想要加LOGO图片的直接加载图片在二维码中心即可。
2.代码如下
@interfaceViewController ()
@property(nonatomic,strong)UIImageView
*imgView;
@end
@implementation ViewController
- (void)viewDidLoad {
[superviewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
self.imgView=[[UIImageViewalloc]initWithFrame:CGRectMake(100,100,
[UIScreenmainScreen].bounds.size.width/2.0,
[UIScreen mainScreen].bounds.size.width/2.0)];
[self.view addSubview:_imgView];
[self qrenCode];
}
-(void)qrenCode
{
//二维码滤镜
CIFilter *filter=[CIFilterfilterWithName:@"CIQRCodeGenerator"];
//恢复滤镜的默认属性
[filtersetDefaults];
//将字符串转换成NSData
NSData *data=[@"1234567890"dataUsingEncoding:NSUTF8StringEncoding];
//通过KVO设置滤镜inputmessage数据
[filtersetValue:data
forKey:@"inputMessage"];
//获得滤镜输出的图像
CIImage *outputImage=[filteroutputImage];
//将CIImage转换成UIImage,并放大显示
_imgView.image=[selfcreateNonInterpolatedUIImageFormCIImage:outputImagewithSize:100.0];
//如果还想加上阴影,就在ImageView的Layer上使用下面代码添加阴影
_imgView.layer.shadowOffset=CGSizeMake(0,0.5);//设置阴影的偏移量
_imgView.layer.shadowRadius=1;//设置阴影的半径
_imgView.layer.shadowColor=[UIColorblackColor].CGColor;//设置阴影的颜色为黑色
_imgView.layer.shadowOpacity=0.3;
}
//改变二维码大小
- (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 = [CIContextcontextWithOptions:nil];
CGImageRef bitmapImage = [contextcreateCGImage:image
fromRect:extent];
CGContextSetInterpolationQuality(bitmapRef,kCGInterpolationNone);
CGContextScaleCTM(bitmapRef, scale, scale);
CGContextDrawImage(bitmapRef, extent, bitmapImage);
// 保存bitmap到图片
CGImageRef scaledImage =CGBitmapContextCreateImage(bitmapRef);
CGContextRelease(bitmapRef);
CGImageRelease(bitmapImage);
return [UIImageimageWithCGImage:scaledImage];
}
3.如果想要加LOGO图片的直接加载图片在二维码中心即可。
相关文章推荐
- 系统原生自带的生成二维码
- iOS 原生二维码[扫码]与[生成]详解
- iOS原生二维码扫描&libqrencode生成二维码
- iOS二维码生成与扫描(zbar和原生AVFoundation)
- iOS原生二维码的生成与扫描
- 原生二维码的生成与扫描.
- iOS开发日记13-原生二维码的扫描和生成
- 苹果原生二维码生成与扫描及生成的二维码不清楚的解决方案
- iOS开发--生成二维码及扫描二维码(原生)
- 二维码的扫描,生成,读取本地二维码(oc原生)
- iOS开发之原生二维码生成与扫描
- iOS开发---原生高清二维码生成
- 用原生js生成二维码的方法,性能上优于jquery
- iOS生成原生二维码
- ios 原生二维码的扫描和生成
- 二维码的扫描和生成原生实现
- 原生二维码扫描实现, 二维码、中间带小图标、条形码生成
- 原生二维码的生成
- iOS开发之原生二维码生成
- 生成二维码-Apple 原生