iOS在控制器中绘制圆形图像,二维码

原文链接:https://my.oschina.net/zyboy/blog/617425
 跟系统申请,在内存中,临时创建一块空白的画布,然后,在这个临时的画布上,画图画字符串,绘制完成后,将临时的这块画布 保存成图片,再将图片放到视图上显示
 关键点就是如何开启这块临时的画布?
      UIGraphicsBeginImage xxxx
      UIGraphicsEndImagexxxx
 在这两句中间,编写与绘图有关的代码,曾经在drawRect方法中编写的代码都可以出现在begin和end之间,这个特殊的区间内,系统会自动返回临时的绘图上下文对象,于是所有的draw方法就都能使用了
    - (void)viewDidLoad {
    [super viewDidLoad];
    // 重新绘制图片,生成圆形的内容.再显示到视图上
    [self creatCircleImage];
}
-(void)creatCircleImage
{
    // 1.创建一张临时的空白画布
    // NO代表透明 YES代表不透明
    UIGraphicsBeginImageContextWithOptions(CGSizeMake(120, 120), NO, 0);
    // 2.创建圆形所属的正方形
    UIBezierPath *path = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(0, 0, 120, 120)];
    [path addClip];
    // 3.绘制图片
    UIImage *image = self.imageView.image;
    [image drawInRect:CGRectMake(0, 0, 120, 120)];
    // 4.将临时画布的内容保存成新的图片
    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
    // 5.关闭临时绘画区间
    UIGraphicsEndImageContext();
    // 显示新图到图片视图上
    self.imageView.image = newImage;
}

iOS在控制器中绘制圆形图像,二维码

绘制二维码

- (void)viewDidLoad {
    [super viewDidLoad];

    CIFilter *filter = [CIFilter filterWithName:@"CIQRCodeGenerator"];
    [filter setDefaults];
    //为二维码准备背后的二进制数据
    NSData *data = [@"www.xxx.cn" dataUsingEncoding:NSUTF8StringEncoding];
    //使用kvc的方式将data赋给filter
    [filter setValue:data forKey:@"inputMessage"];
    //生成图片
    CIImage *outputImage = [filter outputImage];
    //将CIImage变成UIImage
    UIImage *qrImage = [UIImage imageWithCIImage:outputImage];
    self.imageView.image = qrImage;
}

iOS在控制器中绘制圆形图像,二维码

转载于:https://my.oschina.net/zyboy/blog/617425

上一篇:C#-UIImage PNG着色


下一篇:【iOS入门】UIImage及相关类