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

  • 相关阅读:
    [POJ]poj2632(模拟)
    [EOJ]2019 ECNU XCPC March Selection #2
    [POJ]POJ1328(trie)
    卡特兰数相关总结
    2019海亮夏令营随笔
    树上数数 题解
    护卫小队 题解
    洛谷 P2966 [USACO09DEC]牛收费路径Cow Toll Paths 题解
    洛谷 P4735 最大异或和
    登峰造极 题解
  • 原文地址:https://www.cnblogs.com/liuzhenjie/p/5484234.html
Copyright © 2011-2022 走看看