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

    #import "ViewController.h"

    #import <CoreImage/CoreImage.h>

     

    @interface ViewController ()

     

    @property (weak, nonatomic) IBOutlet UIImageView *imageView;

     

    @end

     

    @implementation ViewController

     

    - (void)viewDidLoad

    {

        [super viewDidLoad];

    }

     

    - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event

    {

        // 1.创建滤镜对象

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

        

        // 2.设置相关属性

        [fiter setDefaults];

        

        // 3.设置输入数据

        NSString *inputData = @"http://www.baidu.com";

        NSData *data = [inputData dataUsingEncoding:NSUTF8StringEncoding];

        [fiter setValue:data forKeyPath:@"inputMessage"];

        

        // 4.获取输出结果

        CIImage *outputImage = [fiter outputImage];

        

        // 5.显示二维码

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

    }

     

    /**

     *  根据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

  • 相关阅读:
    bzoj2564: 集合的面积(闵可夫斯基和 凸包)
    省选前做题记录
    loj#2978. 「THUSCH 2017」杜老师(乱搞)
    loj#6437. 「PKUSC2018」PKUSC(计算几何)
    洛谷P4501/loj#2529 [ZJOI2018]胖(ST表+二分)
    loj#6436. 「PKUSC2018」神仙的游戏(NTT)
    洛谷P4459/loj#2511 [BJOI2018]双人猜数游戏(博弈论)
    洛谷P4458 /loj#2512.[BJOI2018]链上二次求和(线段树)
    洛谷P4457/loj#2513 [BJOI2018]治疗之雨(高斯消元+概率期望)
    loj#6435. 「PKUSC2018」星际穿越(倍增)
  • 原文地址:https://www.cnblogs.com/liuzhenjie/p/5484234.html
Copyright © 2011-2022 走看看