【问题标题】:How to take a photo using ICCameraDevice?如何使用 ICCameraDevice 拍照?
【发布时间】:2012-01-21 22:58:17
【问题描述】:

我正在尝试让 Mac 应用程序与 Canon Mark II 5D 配合使用。

基本上,我希望能够单击按钮并拍摄照片、检索照片并显示它。我还有很多工作要做,但这是我遇到问题的部分。

无论如何,我正在使用ICDeviceBrowser 查找设备,并且我能够找到它。我使用以下 delgate 方法将其设置为我的设备。

- (void)deviceBrowser:(ICDeviceBrowser*)browser didAddDevice:(ICDevice*)addedDevice moreComing:(BOOL)moreComing {

    ICCameraDevice *thisCamera = (ICCameraDevice*)addedDevice;
    thisCamera.delegate = self;

    self.camera = thisCamera;

    [self.camera requestOpenSession];

}

然后要关闭相机,我想我会这样做......但什么都没有发生。

[self.camera requestTakePicture];

有没有人玩过这个,或者可能知道发生了什么?

【问题讨论】:

    标签: macos cocoa photo image-capture


    【解决方案1】:

    您可以通过以下方式查看 ICCameraDevice 对拍照的看法

    self.camera.canTakePictures
    

    和

    BOOL canYou = [self.capabilities containsObject:ICCameraDeviceCanTakePicture]
    

    另外,请参阅相机连接模式here。和here从相机下载过程的实现。

    【讨论】:

    • 它肯定有。部分功能是: ICCameraDeviceCanTakePicture
    • 我不知道应用程序应该做什么,但您是否尝试使用QTKit Capture?一些功能解释here和here。
    【解决方案2】:

    希望这还不算太晚,并且对您有用。按钮方法起作用的原因是因为设备在您按下它时已准备就绪。如果要自动捕获,则需要注意 deviceDidBecomeReady 和 didOpenSessionWithError 代表。

    device:(ICDevice *)device didOpenSessionWithError:(NSError *)error 将使您能够启用网络共享,deviceDidBecomeReady 将使您能够执行相机功能。很遗憾,Apple 根本没有记录这一点!

    - (void) deviceDidBecomeReady:(ICDevice *)device {
         [_camera requestTakePicture];
    }
    
    - (void) device:(ICDevice *)device didOpenSessionWithError:(NSError *)error {
        [_camera requestEnableTethering];
    }
    

    【讨论】:

      【解决方案3】:

      实际上刚刚发现这行得通,但是,requestTakePicture 需要使用按钮触发。我只是想在它打开会话后触发它。

      【讨论】:

        猜你喜欢
        • 2017-12-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-06-19
        • 1970-01-01
        • 2013-10-01
        相关资源
        最近更新 更多