对于 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;
}