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

  • 相关阅读:
    网址
    123
    工具安装
    博客专栏-计算机网络
    JQuery(1)
    HTML常用标签
    Spring的线程池技术:ThreadPoolTaskExecutor
    Error:java: 程序包lombok不存在- IDEA+maven+lombok
    Andriod Studio中新创建的xml布局文件无法在R.layout中调用
    SAST : Single-Shot Arbitrarily-Shaped Text Detector论文阅读笔记
  • 原文地址:https://www.cnblogs.com/dashengios/p/5419488.html
Copyright © 2020-2023  润新知