BAD_ACCESS

おもにiOS、ときどき変な電子工作、ガジェット話。

#11 撮影した画像をカメラロールに保存するーC4でエフェクト付きカメラをつくる(3)

この記事は「一人アドベントカレンダー2013〜Lonely Advent Calender 2013〜」の12日目の記事です。

前回はほんの1行でカメラで撮影した画像にエフェクトをかけるという例を紹介しました。

今回、はせっかく撮影した画像をカメラロールに保存する実装までを紹介しようと思います。

フル画面で撮影

カメラのプレビューをフル画面に設定します。 以前作成したシンプルなカメラアプリをもとに作ります。

-(void)setup {
    cam = [C4Camera cameraWithFrame:CGRectMake(0, 0, 320, 568)];
    cam.cameraPosition = CAMERABACK;
    [self.canvas addCamera:cam];
    [cam initCapture];
    cam.captureQuality = C4CameraQualityiFrame1280x720;
    
    [self addGesture:TAP name:@"capture" action:@"captureImage"];
    [self listenFor:@"imageWasCaptured" fromObject:cam andRunMethod:@"putCapturedImageOnCanvas"];
}

撮影した結果もフル画面で表示

-(void)captureImage {
    
    [cam captureImage];
}

-(void)putCapturedImageOnCanvas {
    if (image)
    {
        [image removeFromSuperview];
    }
    image = cam.capturedImage;
    image.width = 320;
    image.origin = CGPointMake(0, 0);
    
    NSLog(@"image rect%@",NSStringFromCGRect(image.frame));
    [self.canvas addImage:image];
}

撮影した結果をカメラロールに保存

通常のiOSのアプリも同様ですが、C4ImageクラスのUIImageプロパティをわたしてあげないとうまくいきません。 こんな感じです。

-(void)saveImageToLibrary 
{ 
    UIImageWriteToSavedPhotosAlbum(image.UIImage, nil, nil, nil);
}

あとはこのメソッドを撮影後に呼んであげればカメラロールに保存されているはずです。

-(void)putCapturedImageOnCanvas {
   (省略)
    NSLog(@"image rect%@",NSStringFromCGRect(image.frame));
    [self.canvas addImage:image];

    (追加)
    [self saveImageToLibrary];
}

これでカメラアプリとしての最低限の機能をみたすことができました。