2

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

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

让我们举个例子:

  • 我按下按钮

  • 计时器开始

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

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

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

但我不知道如何开始。我看到了调用照片应用程序的代码示例,但没有任何东西可以从代码中实现,尽管我看到很多应用程序都是这样做的。当照片被拍摄时,它应该被简单地保存。

我怎样才能做到这一点?

4

2 回答 2

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);

于 2012-10-02T15:35:04.187 回答
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];
    )
}
于 2012-10-02T15:34:59.257 回答