使用ios ZBar SDK扫描静态UIImage

使用ios ZBar SDK扫描静态UIImage,第1张

概述我想使用Zbar sdk扫描静态UI Image,它会给出错误,即 ZBarSymbol是Null 我也查了一下 ZBarReaderController: UIImagePickerController 但因为它是UIImagePickerController的子类,我根本不想使用UIImagePickerController,因为我只想扫描我在我的应用程序中引用的UIImage ..我搜索了这 我想使用Zbar sdk扫描静态UI Image,它会给出错误,即
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所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1109184.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-29
下一篇2022-05-29

发表评论

登录后才能评论

评论列表(0条)

    保存