我在我的一个iOS应用程序中尝试条形码扫描程序。我成功实施了条形码扫描仪。
但目前条形码扫描仅以全屏显示。但我想要的是,视频应全屏观看,条形码应仅在特定部分扫描。也就是说,如果条形码放置在该部分中,那么只应显示它。以下是我目前的代码:
session=[[AVCaptureSession alloc]init];
device=[AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
NSError *error=nil;
input=[AVCaptureDeviceInput deviceInputWithDevice:device error:&error];
if (input) {
[session addInput:input];
}
else{
NSLog(@"Errod : %@",error);
}
output=[[AVCaptureMetadataOutput alloc]init];
[output setMetadataObjectsDelegate:self queue:dispatch_get_main_queue()];
[session addOutput:output];
output.metadataObjectTypes=[output availableMetadataObjectTypes];
prevLayer=[AVCaptureVideoPreviewLayer layerWithSession:session];
[prevLayer setFrame:self.view.bounds];
[prevLayer setVideoGravity:AVLayerVideoGravityResizeAspectFill];
[self.view.layer addSublayer:prevLayer];
[session startRunning];
[self.view bringSubviewToFront:self.lblCode];
[self.view bringSubviewToFront:self.imgShade1];
[self.view bringSubviewToFront:self.imgShade2];
答案 0 :(得分:0)
这就是你所追求的:
CGRect visibleMetadataOutputRect = [prevLayer metadataOutputRectOfInterestForRect:areaOfInterest];
output.rectOfInterest = visibleMetadataOutputRect;
其中areaOfInterest是CGRect。希望这能解决问题。
答案 1 :(得分:0)
也许现在回答这个问题已经很晚了,但我自己刚刚解决了这个问题。所以,希望以后能帮助别人。
关键字是AVCaptureMetadataOutput的rectOfInterest,这是我设置我的方法。
CGSize size = self.view.bounds.size;
_output.rectOfInterest = CGRectMake(cropRect.origin.y/size.height, cropRect.origin.x/size.width, cropRect.size.height/size.height, cropRect.size.width/size.width);
有关详细信息,请查看Apple Inc.的文档。
祝你好运。 :)