iOS7에서 QR코드 스캔
NSError *error;
AVCaptureDevice *captureDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
AVCaptureDeviceInput *input = [AVCaptureDeviceInput deviceInputWithDevice:captureDevice error:&error];
if (error)
{
NSLog(@"%@", [error domain]);
return;
}
self.captureSession = [[AVCaptureSession alloc] init];
[self.captureSession addInput:input];
AVCaptureMetadataOutput *captureMetadataOutput = [[AVCaptureMetadataOutput alloc] init];
[self.captureSession addOutput:captureMetadataOutput];
[captureMetadataOutput setMetadataObjectsDelegate:self queue:dispatch_get_main_queue()];
[captureMetadataOutput setMetadataObjectTypes:@[AVMetadataObjectTypeQRCode]];
AVCaptureVideoPreviewLayer *layer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:self.captureSession];
[layer setVideoGravity:AVLayerVideoGravityResizeAspectFill];
[layer setFrame:self.view.layer.bounds];
[self.view.layer addSublayer:layer];
self.videoPreviewLayer = layer;
[self.captureSession startRunning];
모든 것이 순조롭고 스캐닝의 효율이 매우 높다.
그런데 문제가 하나 생겼어요. 저는 스크린의 작은 상자에서만 스캔하고 싶어요. 전체 스크린에서 스캔할 수 있는 것이 아니라 위챗의 효과와 비슷해요.
문서를 보니 AVCaptureMetadataOutput 클래스에 rectOfInterest 속성이 있습니다.
rectOfInterest의 기본값은 CGRectMake(0,0,1,1)
0과 1은 화면에 비례하는 것이지 구체적인 수치가 아니다.
그리고 x와 y,width와height의 위치가 바뀌었다.
코드 추가:
CGRect lensRect = self.lensView.frame;
CGFloat screenW = ScreenSize.width;
CGFloat screenH = ScreenSize.height;
CGRect rectInterest = CGRectMake(CGRectGetMinY(lensRect) / screenH,
((screenW-CGRectGetWidth(lensRect)))/2/screenW,
CGRectGetHeight(lensRect) / screenH,
CGRectGetWidth(lensRect) / screenW);
[captureMetadataOutput setRectOfInterest:rectInterest];
대성공!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.