2010年6月1日火曜日

UIGetScreenImageでカメラ画像のキャプチャー(iPhone)

スズキです。

UIImagePickerControllerでカメラ表示までできたので、
http://blog.suz-lab.com/2010/05/uiimagepickercontrolleriphone.html

次は、そのカメラ画像のキャプチャーです。

キャプチャー時には、最初の二秒くらいは、シャッターアニメーションなので、
タイマーで、それ以降にキャプチャーするように調整擦る必要があります。

コードは下記のようになりました。
(UIGetScreenImageViewController.hは下記のものと同じです)
http://blog.suz-lab.com/2010/05/uiimagepickercontrolleriphone.html

タイマーで、二秒後から、0.5秒ごとに5枚キャプチャーしています。

--------【UIGetScreenImageViewController.m】--------
#import "UIGetScreenImageViewController.h"
@implementation UIGetScreenImageViewController

NSInteger captureCount;
NSTimer* timer;
UIImagePickerController* imagePicker;

- (void)viewDidLoad {
  [super viewDidLoad];
  imagePicker = [[UIImagePickerController alloc] init];
  imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
  imagePicker.showsCameraControls = NO;
  [imagePicker autorelease];
}

- (void)viewDidAppear:(BOOL)animated {
  [super viewDidAppear:animated];
  [self presentModalViewController:imagePicker animated:YES];
  captureCount = 0;
  timer = [NSTimer
    scheduledTimerWithTimeInterval:0.5
    target:self
    selector:@selector(onTimer:)
    userInfo:nil
    repeats:YES
  ];
}

- (void)onTimer:(NSTimer *)timer {
  if(captureCount <= 8) {
    if(captureCount >= 4) {
      UIImageWriteToSavedPhotosAlbum(
        [UIImage imageWithCGImage:UIGetScreenImage()],
        nil,
        nil,
      nil);
      NSLog(@"%d", captureCount);
    }
  } else {
    [timer invalidate];
  }
 captureCount++;
}

@end
--------

[self dismissModalViewControllerAnimated:YES];
でカメラ消そうとしたら、「EXC_BAD_ACCESS」になってしまう…

--------
http://www.suz-lab.com

0 コメント: