Сканирование штрих-кода zbar только с изображения без просмотра изображения или камеры

Привет, если я сделаю экран захвата изображения с этим

-(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, для этого?


person souvickcse    schedule 20.11.2013    source источник


Ответы (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

person souvickcse    schedule 20.11.2013
comment
Эй, вы знаете, как добавить оптический зум программно? - person souvickcse; 20.11.2013
comment
я не пробовал тот. Я постараюсь и дам вам знать. Нужно установить оптический зум при сканировании штрих-кода, верно? - person Ganapathy; 21.11.2013
comment
да. Я использовал свой собственный вид камеры и отправил изображение на сканер zbar, поэтому. - person souvickcse; 21.11.2013