使用计时器以编程方式拍照

时间:2012-10-02 14:58:00

标签: iphone objective-c timer photo

我正在寻找一种方法,使用计时器从Objective-C和使用计时器的图像显示器制作照片。

我的意思是:我想要一个类似于标准照片应用程序的界面,但按下按钮后不能拍照片,但按钮必须启动一个计时器(从计时器我将检查其他值)。 / p>

我们举个例子:

  • 我按下按钮

  • 计时器启动

  • 在检查值1-2秒后,照片将被拍摄

  • 照片会自动保存在照片库中。

  • 该应用程序已准备好制作其他照片

但我不知道如何开始。我看到了调用Photo Application的代码示例,但是没有任何代码可以通过代码实现,尽管我看到许多应用程序都这样做。拍摄照片后,应该只保存。

我该怎么做?

2 个答案:

答案 0 :(得分:0)

使用UIImagePickerController显示默认的相机GUI。

UIImagePickerController *picker = [[UIImagePickerController alloc] init];
picker.sourceType = UIImagePickerControllerSourceTypeCamera;
picker.showsCameraControls = NO;

您可以将showsCameraControls设置为NO来隐藏默认的相机控件。然后,您可以通过创建UIView,添加控件并将cameraOverlayView设置为该视图来定义自己的控件。

UIView *cameraControlsView = [[UIView alloc] initWithFrame:controlsFrame];
UIButton *captureButton = [[UIButton alloc] initWithFrame:buttonFrame];
[captureButton setTitle:@"Capture" forState:UIControlStateNormal];
[captureButton addTarget:self action:@selector(buttonPressed:)        
        forControlEvents:UIControlEventTouchUpInside];
[cameraControlsView addSubview:captureButton];
picker.cameraOverlayView = cameraControlsView;

当用户点击自定义捕获UIButton时,您可以启动计时器。当计时器触发时,您进行验证并使用takePicture方法捕获图像。

- (void)buttonPressed:(id)sender {
    [NSTimer scheduledTimerWithTimeInterval:3.0f target:self 
     selector:@selector(timerFired:) userInfo:nil repeats:NO];
}

- (void)timerFired:(NSTimer *)timer {
    if (whateverIsOk) {
        [self.picker takePicture];
    )
}

答案 1 :(得分:0)

UIImagePickerController类中有一个方法以编程方式拍摄照片

-(void)takePicure

要将图像保存到照片库,您有两个选项

  1. 使用ALAssetLibrary

    ALAssetsLibrary *al = [[ALAssetsLibrary alloc] init]; [al writeImageDataToSavedPhotosAlbum:user.photo.image metadata:nil completionBlock:^(NSURL *assetURL, NSError *error) { }];

  2. void UIImageWriteToSavedPhotosAlbum(UIImage *image, id completionTarget, SEL completionSelector, void *contextInfo);