zoukankan      html  css  js  c++  java
  • ios如何生成二维码

    ios 7以后 系统为我们集成了生成二维码和读取功能,我们可以使用系统自带的框架 来进行二维码的相关操作。 框架CoreImage框架(该框架可以做毛玻璃效果),通过滤镜CIFilter生成二维码 。

    生成二维码步骤: 包含库头文件 import <CoreImage/coreImage.h>

    1, 创建过滤器

        CIFilter *filter = [CIFilter filterWithName:@"CIQRCodeGenerator"];

    2,  恢复默认设置 

        [filter setDefaults];

    3,给过滤器添加数据

      NSString *str = @"这是一个二维码的生成结果";  (如果想让二维码是一个URL,直接将字符串改成URL地址)

      NSData *data =  [strData dataUsingEncoding:NSUTF8StringEncoding];

      [filter setValue:data forKey:@"inputMessage"];

    4,获取输出的二维码

      CIImage *outPutImage = [filter outputImage];     返回的是一个CIImage

    5 , 显示二维码

      self.imageView.image =[UIImage imageWithCIImage:outPutImage];       添加到 UI控件 上。

      附: 有时候我们需要在二维码的中间 加一张小图片, 需要自己手动添加 一个 子视图,做下约束 即可。

       但是 用上面方法生成的二维码 比较模糊, 用下面这个方法 可以生成 高清晰的 二维码,直接调用该方法即可,方法如下:

         self.imageView.image = [self createNonInterpolatedUIImageFormCIImage:outPutImage  withSize:200]; 

    - (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];
    }

  • 相关阅读:
    CF 461B Appleman and Tree
    POJ 1821 Fence
    NOIP 2012 开车旅行
    CF 494B Obsessive String
    BZOJ2337 XOR和路径
    CF 24D Broken robot
    POJ 1952 BUY LOW, BUY LOWER
    SPOJ NAPTIME Naptime
    POJ 3585
    CF 453B Little Pony and Harmony Chest
  • 原文地址:https://www.cnblogs.com/dashengios/p/5419488.html
Copyright © 2011-2022 走看看