iOS二維碼,條碼掃描問題

來源:互聯網
上載者:User

標籤:

1.公司做一個二維碼條碼掃描的項目,遇到二維碼掃描很好識別,條碼掃描有點慢

解決辦法:device放大焦距(完美解決)

 

 //擷取攝像裝置

    AVCaptureDevice * device = [AVCaptureDevicedefaultDeviceWithMediaType:AVMediaTypeVideo];

    //建立輸入資料流

    AVCaptureDeviceInput * input = [AVCaptureDeviceInputdeviceInputWithDevice:device error:nil];

    //建立輸出資料流

    AVCaptureMetadataOutput * output = [[AVCaptureMetadataOutputalloc]init];

    //設定代理在主線程裡重新整理

    [output setMetadataObjectsDelegate:selfqueue:dispatch_get_main_queue()];

    output.rectOfInterest = scanCrop;

//    [ output setRectOfInterest : CGRectMake (( 124 )/ ScreenHEI ,(( ScreenWHD - 220 )/ 2 )/ ScreenWHD , 220 / ScreenHEI , 220 / ScreenWHD )];

    //初始化連結化物件

    session = [[AVCaptureSessionalloc]init];

    //高品質採集率

    [sessionsetSessionPreset:AVCaptureSessionPresetHigh];

    if (input) {

        [sessionaddInput:input];

    }

    if (output) {

        [sessionaddOutput:output];

        //設定掃碼支援的編碼格式(如下設定條碼和二維碼相容)

        NSMutableArray *a = [[NSMutableArrayalloc] init];

        if ([output.availableMetadataObjectTypescontainsObject:AVMetadataObjectTypeQRCode]) {

            [a addObject:AVMetadataObjectTypeQRCode];

        }

        if ([output.availableMetadataObjectTypescontainsObject:AVMetadataObjectTypeEAN13Code]) {

            [a addObject:AVMetadataObjectTypeEAN13Code];

        }

        if ([output.availableMetadataObjectTypescontainsObject:AVMetadataObjectTypeEAN8Code]) {

            [a addObject:AVMetadataObjectTypeEAN8Code];

        }

        if ([output.availableMetadataObjectTypescontainsObject:AVMetadataObjectTypeCode128Code]) {

            [a addObject:AVMetadataObjectTypeCode128Code];

        }

        output.metadataObjectTypes=a;

    }

    /*

     [ _output setRectOfInterest : CGRectMake (( 124 )/ ScreenHigh ,(( ScreenWidth - 220 )/ 2 )/ ScreenWidth , 220 / ScreenHigh , 220 / ScreenWidth )];

     */

    AVCaptureVideoPreviewLayer * layer = [AVCaptureVideoPreviewLayerlayerWithSession:session];

    layer.videoGravity=AVLayerVideoGravityResizeAspectFill;

    layer.frame = CGRectMake(0, 0, [UIScreenmainScreen].bounds.size.width, self.ScanReadView.frame.size.height);

    [self.ScanReadView.layerinsertSublayer:layer atIndex:0];

    

    [selfsetOverlayPickerView:self.ScanReadView];

    //放大焦距

    NSError *error = nil;

    [device lockForConfiguration:&error];

    

    if (device.activeFormat.videoMaxZoomFactor > 2) {

        device.videoZoomFactor = 2;

    }else{

        device.videoZoomFactor = device.activeFormat.videoMaxZoomFactor;

    }

    

    [device unlockForConfiguration];

    //開始捕獲

    [sessionstartRunning];

 

iOS二維碼,條碼掃描問題

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.