zoukankan      html  css  js  c++  java
  • 根据字符串链接生成二维码

    #pragma mark - InterpolatedUIImage=因为生成的二维码是一个CIImage,我们直接转换成UIImage的话大小不好控制,所以使用下面方法返回需要大小的UIImage
    
    - (UIImage *)createNonInterpolatedUIImageFormCIImage:(CIImage *)image withSize:(CGFloat) size {
    
        CGRect extent = CGRectIntegral(image.extent);
    
        CGFloat scale = MIN(size/CGRectGetWidth(extent), size/CGRectGetHeight(extent));
    
        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);
    
        CGImageRef scaledImage = CGBitmapContextCreateImage(bitmapRef);
    
        CGContextRelease(bitmapRef);
    
        CGImageRelease(bitmapImage);
    
        return [UIImage imageWithCGImage:scaledImage];
    
    }
    #pragma mark - QRCodeGenerator--首先是二维码的生成,使用CIFilter很简单,直接传入生成二维码的字符串即可
    
     
    
    - (CIImage *)createQRForString:(NSString *)qrString {
    
        NSData *stringData = [qrString dataUsingEncoding:NSUTF8StringEncoding];
    
        CIFilter *qrFilter = [CIFilter filterWithName:@"CIQRCodeGenerator"];
    
        [qrFilter setValue:stringData forKey:@"inputMessage"];
    
        [qrFilter setValue:@"M" forKey:@"inputCorrectionLevel"];
    
        return qrFilter.outputImage;
    
    }

    调用:

     UIImage *boundImg = [self createNonInterpolatedUIImageFormCIImage:[self createQRForString:@"http://baidu.com"] withSize:250.0f];

           

  • 相关阅读:
    sharepoint2013保存当前输入的列表
    网站模板的下载和使用
    sharepoint获取是否为输入域用户SharePoint PeopleEditor 控件的使用
    sharepoint指定的人可以看到列表项
    js隐藏显示div
    如何为同一IE浏览器中打开多个页面
    CDC相关知识点总结
    find 命令使用总结
    find 命令search使用
    verilog behavioral modeling --loop statement
  • 原文地址:https://www.cnblogs.com/fengmin/p/5548415.html
Copyright © 2011-2022 走看看