如何使用iphone应用从相机拍照

时间:2012-04-16 14:26:53

标签: iphone

我在按下UI按钮的同时实现了拍照,但是当我按下按钮时应用程序崩溃了。

这是源代码。

.h file
@interface Camera : UIViewController
                                 <UIImagePickerControllerDelegate>
{
   UIImagePickerController *mPicture;

}
@property (nonatomic, retain) UIImagePickerController *mPicture;

.m file
@implementaion Camera
@synthesize mPicture; 
    -(void)pictureButtonPushed
    {
    UIImagePickerControllerSourceType mType = UIImagePickerControllerSourceTypeCamera;
        if ([UIImagePickerController isSourceTypeAvailable:mType]) 
        {
            mPicture.sourceType = mType;
            [self presentModalViewController:mPicture animated:YES];
        }
    }

提前致谢

2 个答案:

答案 0 :(得分:1)

试试这个

希望它会有所帮助:)

   -(IBAction)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 presentModalViewController:imagePickerController animated:YES];
}



-(IBAction)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 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 UImageView.
}

答案 1 :(得分:0)

以下是您想要的代码

- (void)cameraPressed
{
    UIActionSheet *menu = [[UIActionSheet alloc]
                           initWithTitle:@"Set a Prifile Picture"
                           delegate:self
                           cancelButtonTitle:@"Cancel"
                           destructiveButtonTitle:nil
                           otherButtonTitles:@"Choose From Library",@"Take a New Photo",nil];

    [menu showInView:[self.navigationController view] ];
}

// actionsheet delegate
- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
{   
    if (buttonIndex == 1) {
        @try {                
            if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {

                imagePickerController = [[UIImagePickerController alloc] init];

                imagePickerController.sourceType = UIImagePickerControllerSourceTypeCamera;
                imagePickerController.navigationBar.barStyle = UIBarStyleBlack;                
                imagePickerController.delegate = self;
                imagePickerController.allowsEditing = NO;
                [appDelegate.objList setHidden:TRUE];
                appDelegate.strRefreshCamera = @"notupdate";
                [self presentModalViewController:imagePickerController animated:YES];
                [imagePickerController release];
            }
            else {
                [appDelegate showAlertWithTitle:@"Info" message:@"This function needs a camera which is only available on the iPhone or iPod."];
            }
        }
        @catch (NSException *e) {

        }
    }
    if (buttonIndex == 0) {
        if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeSavedPhotosAlbum]) {
            imagePickerController = [[UIImagePickerController alloc] init];
            imagePickerController.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
            imagePickerController.navigationBar.barStyle = UIBarStyleBlack;
            imagePickerController.delegate = self;
            imagePickerController.allowsEditing = NO;
            [appDelegate.objList setHidden:TRUE];
            appDelegate.strRefreshCamera = @"notupdate";
            [self presentModalViewController:imagePickerController animated:YES];
            [imagePickerController release];
        }
    }
}

- (void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{   
    //flag = TRUE;
    [self dismissModalViewControllerAnimated:YES];
    //[appDelegate showLoadingView];
    UIImage *capturedImage = [info objectForKey:@"UIImagePickerControllerOriginalImage"];
}

在您想要使用的地方使用此图像对象。