iOS遇到的坑

1、二维码尺寸必须是59*59及以上,否则微信内长按识别不了二维码,其他手机扫二维码可能会扫不出来

代码:

+ (UIImage *)generateQRCodeWithString:(NSString *)string size:(CGFloat)size {

    if(!string || string.length==0) {

        returnUIImage.new;

    }

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

    //过滤器恢复默认

    [filtersetDefaults];

    //给过滤器添加数据<字符串长度893>

    NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion: NO];

    [filtersetValue:dataforKey:@"inputMessage"];

    // 注: 这里如果设置H的时间 二维码太小可能会造成信息不全 无法扫描

    [filtersetValue:@"M" forKey:@"inputCorrectionLevel"];

    //获取二维码过滤器生成二维码

    CIImage*image = [filteroutputImage];

    UIImage *img = [self createNonInterpolatedUIImageFromCIImage:[image imageByApplyingTransform:CGAffineTransformMakeScale(YYScreenScale(), YYScreenScale())] WithSize:size];


    returnimg;

}

+ (UIImage *)createNonInterpolatedUIImageFromCIImage:(CIImage *)image WithSize:(CGFloat)size {

    CGRect extent = CGRectIntegral(image.extent);

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


    //创建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);


    //保存图片

    CGImageRef scaledImage = CGBitmapContextCreateImage(bitmapRef);

//    UIImage *newImage = [UIImage imageWithCGImage:scaledImage];

    UIImage *newImage = [UIImage imageWithCGImage:scaledImage scale:YYScreenScale() orientation:UIImageOrientationUp];


    CGContextRelease(bitmapRef);

    CGImageRelease(bitmapImage);

    CGColorSpaceRelease(cs);

    CGImageRelease(scaledImage);


    returnnewImage;

}

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

相关阅读更多精彩内容

  • IOS 开发值网络权限和跳转系统的指定界面 在开发中APP 首次安装的时候,会弹出一个是否允许APP 访问网络...
    先用这个吧阅读 1,986评论 0 1
  • 1、以资源文件预加载sqlite的时候,模拟器一切正常,真机无法操作数据库。 报错: Unknown error ...
    浪漫旋律阅读 2,534评论 0 0
  • 1.cocoapod GPUImage里面的代码不加载它对应文件的资源图片 在 加入代码 if [[ "$CONF...
    萧城x阅读 1,118评论 0 0
  • 职业转型期的文洁意外在自闭症康复中心成了“异得”人士,结识了手绘二维码的自闭男孩小纯和网红雪儿。 神秘二维码为何导...
    浩哥带你玩阅读 1,056评论 0 9
  • 1. 二维码扫码库介绍 二维码又称QR Code,QR全称Quick Response,是一个近几年来移动设备上超...
    Jinwong阅读 12,884评论 1 40

友情链接更多精彩内容