#ios #objective-c #ios10 #cidetector
#iOS #objective-c #ios10 #cidetector
Вопрос:
(NSString *)readQRCodeImage:(UIImage *)imagePicked {
CIImage *qrcodeImage = [CIImage imageWithCGImage:imagePicked.CGImage];
CIContext *qrcodeContext = [CIContext contextWithOptions:nil];
// detector
CIDetector *qrcodeDetector = [CIDetector detectorOfType:CIDetectorTypeQRCode context:qrcodeContext options:@{CIDetectorAccuracy:CIDetectorAccuracyHigh}];
// read features
NSArray *qrcodeFeatures = [qrcodeDetector featuresInImage:qrcodeImage];
//
NSString *qrcodeResultString = nil;
if (qrcodeFeatures amp;amp; qrcodeFeatures.count > 0) {
for (CIQRCodeFeature *qrcodeFeature in qrcodeFeatures) {
if (qrcodeResultString amp;amp; qrcodeResultString.length > 0) {
break;
}
qrcodeResultString = qrcodeFeature.messageString;
}
}
NSLog(@"%@",qrcodeResultString);
return qrcodeResultString;
}
Я хочу прочитать функции изображения, такие как изображение в iOS10.
Код работает нормально в iOS8 и iOS9.
Комментарии:
1. Что на самом деле не так?
Ответ №1:
Я думаю, что они внесли изменения в класс CIFeautre. Теперь вам нужно преобразовать его в подкласс CIQRCodeFeature .
Как я это сделал в Swift:
let userFeatures = userDetector?.features(in: userImage!) as? [CIQRCodeFeature]
userDecode = (userFeatures?[0].messageString)!