iOS CIDetector 识别二维码失败解决方案

对于 CIDetector 如果目标二维码过大,有几率造成识别失败,需对图片进行缩小:

+ (UIImage *)imageSizeWithScreenImage:(UIImage *)image {
    CGFloat imageWidth = image.size.width;
    CGFloat imageHeight = image.size.height;
    CGFloat screenWidth = ScreenWidth;
    CGFloat screenHeight = ScreenHeight;
    
    if (imageWidth <= screenWidth && imageHeight <= screenHeight) {
        return image;
    }
    
    CGFloat max = MAX(imageWidth, imageHeight);
    CGFloat scale = max / (screenHeight * 2.0);
    
    CGSize size = CGSizeMake(imageWidth / scale, imageHeight / scale);
    UIGraphicsBeginImageContext(size);
    [image drawInRect:CGRectMake(0, 0, size.width, size.height)];
    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    
    return newImage;
}

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

推荐阅读更多精彩内容

  • 最近在做一个关于二维码的组件,已发布,现总结下。开发的APP所需支持的最低版本为7.0,最初的方案为扫描使用苹果自...
    LeverTsui阅读 14,827评论 14 31
  • 今天在做一个从本地相册中识别二维码的功能,在搜索后决定采用CIDetector这个原生的功能实现。具体代码在...
    dj阅读 8,230评论 7 4
  • 1. 为什么要做这个库? 相信大家在平常的生活中,如果遇到扫码的场景第一个想到的应该就是微信了,可以说微信使用二维...
    森码阅读 22,012评论 34 71
  • 140121-两个孩子的成长日记《2019年10月2日》 午饭后我们一家出去玩,果蔬批发市场出发。 我们要买一点水...
    坤燕_634c阅读 1,534评论 0 3
  • 我的内心有不安, 我知道了,我还活着。 我的眼中还有对梦想的渴望, 我了解了,我还活着。 像一阵风一般的自由生活,...
    平复阅读 3,890评论 10 32