
ZbarSymbol是Null
我也查了一下
ZbarReaderController: UIImagePickerController
但因为它是UIImagePickerController的子类,我根本不想使用UIImagePickerController,因为我只想扫描我在我的应用程序中引用的UIImage ..我搜索了这个问题,但没有得到任何帮助..
我也尝试过ZbarImageScanner,
- (voID) scanFromUIImage: (UIImage *)img{ // setup scaner ZbarImageScanner *scanner = [[ZbarImageScanner alloc] init]; Settings *settings = [Settings globalSettings]; //ZbarImageScanner *scanner = reader.scanner; BOol haveLonglinear = NO; for(Nsstring *str in settings.enabledSymbologIEs) { NSNumber *value = [settings.enabledSymbologIEs objectForKey: str]; BOol enable = value.boolValue; zbar_symbol_type_t sym = [str integerValue]; [scanner setSymbology: sym config: Zbar_CFG_ENABLE to: enable]; if(sym == Zbar_EAN13) { // show EAN variants as such [scanner setSymbology: Zbar_UPCA config: Zbar_CFG_ENABLE to: enable]; [scanner setSymbology: Zbar_UPCE config: Zbar_CFG_ENABLE to: enable]; [scanner setSymbology: Zbar_ISBN13 config: Zbar_CFG_ENABLE to: enable]; } haveLonglinear |= enable && sym > Zbar_COMPOSITE && sym != Zbar_QRCODE; } ZbarImage *zbimg = [[ZbarImage alloc] initWithCGImage:img.CGImage]; UIImage *image = screenShot; ID <NSFastEnumeration> results = [scanner scanImage:zbimg]; //NSLog(@"-------> %@",results); ZbarSymbol *sym = nil; for(sym in results) break; assert(sym); assert(image); if(!sym || !image) return; barcode *barcode = [NSEntityDescription insertNewObjectForEntityForname: @"barcode" inManagedobjectContext: context]; assert(barcode); if(!barcode) return; assert(currentFolder); // wana save safari screen shot to Safari Folder Folder *folder = nil; folder = [Folder defaultFolderInContext: context]; if(folder != currentFolder) { [currentFolder release]; currentFolder = [folder retain]; } barcode.folder = currentFolder; barcode.date = [NSDate date]; barcode.image = image; barcode.symbol = sym; barcode.type = [NSNumber numberWithInteger: sym.type]; barcode.data = sym.data; barcode.name = nil; barcode.thumb = nil; NSArray *stack = nav.vIEwControllers; barcodeListController *_List = nil; if(stack.count > 1) { _List = [stack objectAtIndex: 1]; if(![_List isKindOfClass: [barcodeListController class]] || _List.folder != currentFolder) _List = nil; } if(_List) [nav popToVIEwController: _List animated: NO]; else { [nav popToRootVIEwControllerAnimated: NO]; _List = [[[barcodeListController alloc] initWithFolder: currentFolder] autorelease]; [nav pushVIEwController: _List animated: NO]; } UIVIEwController *detail = [[barcodeDetailController alloc] initWithbarcode: barcode]; [nav pushVIEwController: detail animated: NO]; [detail release]; if(settings.autolink) [self performSelector: @selector(autolink:) withObject: barcode afterDelay: 0.25]; [window.rootVIEwController addismissModalVIEwController:self.safari animated: YES]; [self performSelector: @selector(genThumb:) withObject: barcode afterDelay: .5];}解决方法 Baig精彩解决方案的精简版.将Zbar_I25更改为所需的代码格式. - (Nsstring *)findQRCode:(UIImage *)inputUIImage{ ZbarReaderController *imageReader = [ZbarReaderController new]; [imageReader.scanner setSymbology: Zbar_I25 config: Zbar_CFG_ENABLE to: 0]; ID <NSFastEnumeration> results = [imageReader scanImage:inputUIImage.CGImage]; ZbarSymbol *sym = nil; for(sym in results) { break; } // Get only last symbol if (!sym) { NSLog(@"No barcode found"); return nil; } NSLog(@"Found barcode! quality: %d string: %@",sym.quality,sym.data); return sym.data;} 总结 以上是内存溢出为你收集整理的使用ios ZBar SDK扫描静态UIImage全部内容,希望文章能够帮你解决使用ios ZBar SDK扫描静态UIImage所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)