プロジェクションマッピング

エンターテインメントから工業利用まで、プロジェクションマッピングの活用・運用をお考えの方へ

more

インタラクティブ&サイネージ

情報表示用のデジタルサイネージから、センサーを利用したインタラクティブ要素などをお考えの方へ

more

VR/360MOVIE

VRHMD用コンテンツからプラットフォームを利用した360度ムービーを活用したPRをお考えの方へ

more
CONTACT 052-253-9866

はじめてのカメラアプリ vol.15 カメラに画像トリミングのオンオフ機能をつける

2013.12.18 水曜日 07:05:14

yun_133_02

カメラアプリなら、投稿用の正方形ももちろん必要ですが、撮ったままの待ち受けサイズでも編集したいですよね。
ということで今回は、画像トリミング機能にオンオフスイッチを付けてみました。

storyboardにスイッチを設置

ViewController.mに、以下を参考にインスタンス宣言を記述します。
StoryboardにImageViewとSwitchを配置して、アウトレット接続もしてください。

// 写真表示のためのイメージビュー
@property (weak, nonatomic) IBOutlet UIImageView *myImageView;
//スイッチ
@property (weak, nonatomic) IBOutlet UISwitch *trimmingSwitch;

カメラ機能とスイッチ分岐を記述

ViewController.mに、以下を参考にボタンタップ時の処理内容を記述します。

//カメラ機能
- (IBAction)startCamera:(UIBarButtonItem *)sender
{
    if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])
    {
        // イメージピッカーコントローラ
        UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
        imagePicker.delegate = self;
        imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
        
        // トリミングのスイッチ判定
        if(_trimmingSwitch.on){
        imagePicker.allowsEditing = YES;
        }

        [self presentViewController:imagePicker animated:YES completion:nil];
    }
}

//Cancelボタン
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker{
    [self dismissViewControllerAnimated:YES completion:nil];
}

//Use Photoボタン
-(void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info{
    // 元画像
    UIImage *defaultImage = (UIImage *)[info objectForKey:UIImagePickerControllerOriginalImage];
    // 編集済み画像
    UIImage *trimmedImage = (UIImage *)[info objectForKey:UIImagePickerControllerEditedImage];
    
    // トリミングのスイッチ判定
    if(_trimmingSwitch.on){
        // イメージビューに編集済み画像を表示
        _imageView.image = trimmedImage;
    }else{
        // イメージビューに元画像を表示
        _imageView.image = defaultImage;
    }
    // 最初に戻る
    [self dismissViewControllerAnimated:YES completion:nil];
}


//フォトライブラリ
- (IBAction)selectPhoto:(UIBarButtonItem *)sender{
    if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]) {
        UIImagePickerController *imagePickerController = [[UIImagePickerController alloc] init];
        imagePickerController.delegate = self;
       
        // トリミングのスイッチ判定
        if(_trimmingSwitch.on)
        {
        imagePickerController.allowsEditing = YES;
        }
        
        // フォトライブラリの画像を表示
        imagePickerController.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
        [self presentViewController:imagePickerController  animated:YES completion: nil];
 
    } else {
        UIAlertView *newView = [[UIAlertView alloc] initWithTitle:nil
                                                          message:@"Photo Library not alaivable"
                                                         delegate:nil
                                                cancelButtonTitle:@"OK"
                                                otherButtonTitles:nil];
        [newView show];
    }
}

これで2パターンを切り替えられますね。
imagePicker.allowsEditing = YES;を記述するとトリミング画面が表示されるので、これを何も記述しないと元画像を表示させられるようです。
ところが、imagePicker.allowsEditing = NO;にすると、画像の表示もしてくれないので注意してください!

近々インターフェース周りを作っていきたいと思っています!なかなか時間取れませんが…
次回へ続く!

Category:Development , Project , Xcode , はじめてのカメラアプリ     Tag:
Authorブログの著者について
田中 義弘

田中 義弘

イベントプロダクション・グラフィックデザイナーを経て、2010年3月に株式会社アイデアクラウドを設立。近年、WEBから得た技術をベースに、プロジェクションマッピング事業をはじめとした先端事業をスタート。

Our Business
最近の記事
人気記事
Our Project