ios中通过代码生成二维码

话不多说,直接上代码

/**

 * 根据CIImage生成指定大小的UIImage

 *

 * @param image CIImage

 * @param size 图片宽度

 */

- (UIImage*)createNonInterpolatedUIImageFormCIImage:(CIImage*)image withSize:(CGFloat) size

{

    CGRect extent = CGRectIntegral(image.extent);

    CGFloatscale =MIN(size/CGRectGetWidth(extent), size/CGRectGetHeight(extent));

    // 1.创建bitmap;

    size_twidth =CGRectGetWidth(extent) * scale;

    size_theight =CGRectGetHeight(extent) * scale;

    CGColorSpaceRef cs = CGColorSpaceCreateDeviceGray();

    CGContextRef bitmapRef = CGBitmapContextCreate(nil, width, height, 8, 0, cs, (CGBitmapInfo)kCGImageAlphaNone);

    CIContext *context = [CIContext contextWithOptions:nil];

    CGImageRefbitmapImage = [contextcreateCGImage:imagefromRect: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];

}

调用以上方法

// 1. 实例化二维码滤镜

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

    // 2. 恢复滤镜的默认属性

    [filtersetDefaults];


    // 3. 将字符串转换成NSData

    NSString *urlStr = @"http://www.ychpay.com/down.html";//测试二维码地址,次二维码不能支付,需要配合服务器来二维码的地址(跟后台人员配合)

    NSData *data = [urlStr dataUsingEncoding:NSUTF8StringEncoding];

    // 4. 通过KVO设置滤镜inputMessage数据

    [filtersetValue:dataforKey:@"inputMessage"];


    // 5. 获得滤镜输出的图像

    CIImage*outputImage = [filteroutputImage];


    // 6. 将CIImage转换成UIImage,并放大显示 (此时获取到的二维码比较模糊,所以需要用下面的createNonInterpolatedUIImageFormCIImage方法重绘二维码)

    //    UIImage *codeImage = [UIImage imageWithCIImage:outputImage scale:1.0 orientation:UIImageOrientationUp];


    UIImageView *wechatImageView = [[UIImageView alloc] initWithFrame:CGRectMake(40, 30, SCREEN_WIDTH - 80, SCREEN_WIDTH - 80)];

    wechatImageView.image = [self createNonInterpolatedUIImageFormCIImage:outputImage withSize:200];//重绘二维码,使其显示清晰

    [self.viewaddSubview:wechatImageView];

只要将url替换成自己的url就好了

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一、扫描 1、 ZBar ZBar在扫描的灵敏度上,和内存的使用上相对于ZXing上都是较优的,但是对于 “圆角二...
    空白Null阅读 4,741评论 0 2
  • // 1. 实例化二维码滤镜 CIFilter *filter = [CIFilter filterWithNam...
    家振要翻天阅读 3,698评论 0 0
  • 许多UIView的子类,如一个UIButton或一个UILabel,它们知道怎么绘制自己。迟早,你也将想要做一些自...
    shenzhenboy阅读 5,637评论 2 8
  • 首先先了解一下二维码的容错(例如微信的二维码中间附带头像图片): 二维码都有一定的纠错,就是有部分污损或者破损都没...
    零零贰叁阅读 5,004评论 0 0
  • 今天是母亲节,祝天下所有母亲,以及即将成为母亲的人身体健康,万事如意。 她是世界上最伟大的人,她用她瘦弱的身体给自...
    缈衍阅读 1,499评论 0 1

友情链接更多精彩内容