web-dev-qa-db-ja.com

iPhoneアプリで写真を撮るにはどうすればよいですか?

私はxcodeでCocoaを使ってiPhoneアプリを書いています。内蔵カメラで写真を撮る方法を示すチュートリアルやサンプルコードが見つかりません。どうすればよいですか?良い情報はどこにありますか?

ありがとう!

18
Mr PhotoGuy

次のコードをコピーしてプロジェクトに貼り付けるだけで、完全に実装された機能を利用できます。

ここで、takePhotoおよびchooseFromLibraryは、ボタンのタッチで呼び出される独自のメソッド名です。

これらの方法については、適切なボタンのアウトレットを参照してください。

   -(IBAction)takePhoto :(id)sender

{
        UIImagePickerController *imagePickerController = [[UIImagePickerController alloc] init];

        if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])
        {
            [imagePickerController setSourceType:UIImagePickerControllerSourceTypeCamera];
        }

        // image picker needs a delegate,
        [imagePickerController setDelegate:self];

    // Place image picker on the screen
    [self presentModalViewController:imagePickerController animated:YES];
}



-(IBAction)chooseFromLibrary:(id)sender
{

    UIImagePickerController *imagePickerController= [[UIImagePickerController alloc] init]; 
    [imagePickerController setSourceType:UIImagePickerControllerSourceTypePhotoLibrary];

    // image picker needs a delegate so we can respond to its messages
    [imagePickerController setDelegate:self];

    // Place image picker on the screen
    [self presentModalViewController:imagePickerController animated:YES];

}

//delegate methode will be called after picking photo either from camera or library
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{   
    [self dismissModalViewControllerAnimated:YES]; 
    UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];

    [myImageView setImage:image];    // "myImageView" name of any UIImageView.
}
24
W.S

UIImagePickerControllerを使用します。これに関する良いチュートリアルがここにあります。

http://www.zimbio.com/iPhone/articles/1109/Picking+Images+iPhone+SDK+UIImagePickerController

ソースタイプをUIImagePickerControllerSourceTypeCameraまたはUIImagePickerControllerSourceTypePhotoLibraryに設定する必要があります。これらの2つのタイプでは、画面の表示が大きく異なることに注意してください。両方を注意深くテストする必要があります。特に、UIImagePickerControllerUINavigationController内にネストしている場合、注意しないと、複数のナビゲーションバーやその他の奇妙な効果が発生する可能性があります。

参照 このスレッド

11
Airsource Ltd

UIImagePickerControllerクラスを使用すると、写真を撮ったり、フォトライブラリから写真を選択したりできます。ソースタイプをUIImagePickerControllerSourceTypeCameraとして指定します。

以前に尋ねられたこの質問も参照してください: iPhone SDKでカメラにアクセスする

4
jblocksom

@WQSによって投稿された回答は正常に機能しますが、iOS6で廃止されたいくつかのメソッドが含まれています。iOS6以降の更新された回答は次のとおりです。

-(void)takePhoto
{
    UIImagePickerController *imagePickerController = [[UIImagePickerController alloc] init];

    if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])
    {
        [imagePickerController setSourceType:UIImagePickerControllerSourceTypeCamera];
    }

    // image picker needs a delegate,
    [imagePickerController setDelegate:self];

    // Place image picker on the screen
    [self presentViewController:imagePickerController animated:YES completion:nil];
}



-(void)chooseFromLibrary
{

    UIImagePickerController *imagePickerController= [[UIImagePickerController alloc]init];
    [imagePickerController setSourceType:UIImagePickerControllerSourceTypePhotoLibrary];

    // image picker needs a delegate so we can respond to its messages
    [imagePickerController setDelegate:self];

    // Place image picker on the screen
    [self presentViewController:imagePickerController animated:YES completion:nil];

}

//delegate methode will be called after picking photo either from camera or library
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
    [self dismissViewControllerAnimated:YES completion:nil];
    UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];

[myImageView setImage:image];    // "myImageView" name of any UImageView.
}

これをview controller.hに追加することを忘れないでください:

@interface myVC<UINavigationControllerDelegate, UIImagePickerControllerDelegate>
1
Prince Agrawal

これが私のアプリの写真を撮るために使用した私のコードです

- (IBAction)takephoto:(id)sender {

    picker = [[UIImagePickerController alloc] init];
    picker.delegate = self;
    [picker setSourceType:UIImagePickerControllerSourceTypeCamera];
    [self presentViewController:picker animated:YES completion:NULL];


}
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
    img = [info objectForKey:@"UIImagePickerControllerOriginalImage"];
    [imageview setImage:img];
    [self dismissViewControllerAnimated:YES completion:NULL];
}

簡単に写真を撮り直したい場合は、この機能を追加してください

-(void)imagePickerControllerDidCancel:(UIImagePickerController *)picker
{
    [self dismissViewControllerAnimated:YES completion:NULL];
}
0
Sabrina Tuli