iPhone:如何通过编程使用前置摄像头拍照

7

我想在我的iPhone应用程序中通过前置摄像头以编程方式拍照。我不希望用户选择或与图像选择器进行任何交互..只想拍照并将其保存在文档中..这是否可能?


可能是重复的问题,与https://dev59.com/U2435IYBdhLWcg3wvy05?lq=1相同。 - Sandeep Singh
3个回答

8
从您的问题中,我可以理解到您只需要使用AV Foundation。请参考苹果公司提供的演示源代码:AVCam

0

试试这个 -

   - (IBAction) scanButtonTapped
          {
         // ADD: present a barcode reader that scans from the camera feed
            ZBarReaderViewController *reader = [ZBarReaderViewController new];
            reader.readerDelegate = self;
             reader.supportedOrientationsMask = ZBarOrientationMaskAll;

              ZBarImageScanner *scanner = reader.scanner;
           // TODO: (optional) additional reader configuration here

          // EXAMPLE: disable rarely used I2/5 to improve performance
               [scanner setSymbology: ZBAR_I25
               config: ZBAR_CFG_ENABLE
                   to: 0];

          // present and release the controller
               [self presentModalViewController: reader
                         animated: YES];
               [reader release];
    }
    - (void) imagePickerController: (UIImagePickerController*) reader
       didFinishPickingMediaWithInfo: (NSDictionary*) info
        { 
          // ADD: get the decode results
             id<NSFastEnumeration> results =
               [info objectForKey: ZBarReaderControllerResults];
               ZBarSymbol *symbol = nil;
               for(symbol in results)
                   // EXAMPLE: just grab the first barcode
                      break;

                   // EXAMPLE: do something useful with the barcode data
                      resultText.text = symbol.data;
                      bid.text=symbol.data;

                   // EXAMPLE: do something useful with the barcode image
                      resultImage.image =
                      [info objectForKey: UIImagePickerControllerOriginalImage];

                   // ADD: dismiss the controller (NB dismiss from the *reader*!)
                      [reader dismissModalViewControllerAnimated: YES];
                 }

0

编辑:我的错,似乎你实际上可以通过AVCaptureSession来做到这一点。虽然我无法理解为什么会有这种可能性。对我来说,这似乎是滥用的潜在基础。

原始(错误)答案: 不管是前置摄像头还是后置摄像头,都不可能在没有用户交互的情况下拍照。


你可能会认为可以,但实际上不行。你可以在用户毫不知情的情况下抓取前置或后置摄像头的视频帧。我认为从相机获取高分辨率静止图像总是会触发快门声。 - davehayden
哦,但是使用哪个框架呢?我认为所有的图像捕获框架都提供了用户必须激活才能开始视频/静态图像捕获的UI界面。 - Peter Sarnowski
请查看AVCaptureSession。在设置输入和输出设备并启动会话后,您可以在captureOutput:didOutputSampleBuffer:fromConnection:回调中获取相机帧。不需要UI界面。 - davehayden

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接