【问题标题】:zbar barcode scanning from only image no image view or camera rollzbar 条形码仅从图像扫描,没有图像视图或相机胶卷
【发布时间】:2013-11-20 09:02:44
【问题描述】:

嗨,如果我用这个制作图像捕获屏幕

-(void)initializecam{
     AVCaptureSession *session = [[AVCaptureSession alloc] init];
session.sessionPreset = AVCaptureSessionPresetMedium;

CALayer *viewLayer = self.vImagePreview.layer;
NSLog(@"viewLayer = %@", viewLayer);

AVCaptureVideoPreviewLayer *captureVideoPreviewLayer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:session];

captureVideoPreviewLayer.frame = self.vImagePreview.bounds;
[captureVideoPreviewLayer setVideoGravity:AVLayerVideoGravityResizeAspectFill];
[self.vImagePreview.layer addSublayer:captureVideoPreviewLayer];

AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];

NSError *error = nil;
AVCaptureDeviceInput *input = [AVCaptureDeviceInput deviceInputWithDevice:device error:&error];
if (!input) {
    // Handle the error appropriately.
    NSLog(@"ERROR: trying to open camera: %@", error);
}
[session addInput:input];
_stillImageOutput = [[AVCaptureStillImageOutput alloc] init];
NSDictionary *outputSettings = [[NSDictionary alloc] initWithObjectsAndKeys: AVVideoCodecJPEG, AVVideoCodecKey, nil];
[_stillImageOutput setOutputSettings:outputSettings];

[session addOutput:_stillImageOutput];
[session startRunning];
}

所以现在我想使用 zbar 条码扫描。有人知道怎么做吗。我搜索了很多,但他们使用图像捕获视图以及如何修改该视图。我需要的是我有一个图像[不在相机胶卷中],我想通过 zbar 扫描它,没有图像捕获视图或任何东西。请帮忙。除了 zbar 之外,还有其他免费库可以做到这一点吗?

【问题讨论】:

    标签: ios barcode-scanner zbar


    【解决方案1】:

    可以这样做

     - (void)scan {
    // ADD: present a barcode reader that scans from the camera feed
    
        ZBarReaderController *reader = [ZBarReaderController new];
        reader.readerDelegate = self;
        ZBarImageScanner *scanner = reader.scanner;
    
        // EXAMPLE: disable rarely used I2/5 to improve performance
        [scanner setSymbology: ZBAR_I25
                       config: ZBAR_CFG_ENABLE
                           to: 0];
    
        CGImageRef imgCG = self.imgCameraView.image.CGImage;
    
    id<NSFastEnumeration> results = [reader scanImage:imgCG];
    ZBarSymbol *symbol = nil;
    for(ZBarSymbol *symbolF in results){
        // EXAMPLE: just grab the first barcode
        symbol=symbolF;
        break;
    }
    
    if([symbol.data length]>0){
        NSLog(@"Bar Code ID = %@",symbol.data);
        self.ticketCode=symbol.data;
    
        [self verifybarCode];
        self.vImagePreview.hidden=FALSE;
    }
    else
    {
    [[iToast makeText:AMLocalizedString(@"Image Is Not Properly Scanned\nTry Again", nil)] show];
    self.vImagePreview.hidden=FALSE;
    }
    
    }
    

    之前我是用 ZBarReaderViewController

    【讨论】:

    • 你知道如何以编程方式添加光学变焦吗?
    • 我没试过那个。我会尽力让你知道。扫描条码时需要设置光学变焦吗?
    • 是的。我使用了自己的相机视图并将图像发送到 zbar 扫描仪,这就是原因。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-19
    • 1970-01-01
    • 1970-01-01
    • 2012-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多