分享

iOS 使用UIImagePickerController 拍照

 ccccshq 2014-03-14

    在项目开发的过程中,我们经常会使用的iPhone 或者 iPad 的拍照功能,比如给用户设置头像,一般都会用到拍照功能。我们可以使用UIImagePickerController 类来调用iPhone的摄像头进行拍照或者录视频。iOS 已经为我们封装好了UIImagePickerController ,使用很简单,让我们不用花费很多时间就可以调用拍照功能。使用UIImagePickerController时,需要实现UIImagePickerController协议。

     在xib中添加一个按钮,绑定按钮的响应事件,在响应事件中添加如下代码:

01UIImagePickerControllerSourceType sourceType = UIImagePickerControllerSourceTypeCamera;
02   //判断是否有摄像头
03   if(![UIImagePickerController isSourceTypeAvailable:sourceType])
04    {
05        sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
06    }
07     
08    UIImagePickerController *imagePickerController = [[UIImagePickerController alloc] init];
09    imagePickerController.delegate = self;   // 设置委托
10    imagePickerController.sourceType = sourceType;
11    imagePickerController.allowsEditing = YES;
12    [self presentViewController:imagePickerController animated:YES completion:nil];  //需要以模态的形式展示
13    [imagePickerController release];
    记得要实现UIImagePickerControllerDelegate 中 的- ( void )imagePickerController:( UIImagePickerController *)picker didFinishPickingMediaWithInfo:( NSDictionary *)info 和  

-(void)imagePickerControllerDidCancel:(UIImagePickerController *)picker 两个方法,分别时拍照完成的时候调用 和 取消拍照的时候调用。代码如下:

01#pragma mark -
02#pragma mark UIImagePickerController Method
03//完成拍照
04-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
05{
06    [picker dismissViewControllerAnimated:YES completion:^{}];
07    UIImage *image = [info objectForKey:UIImagePickerControllerEditedImage];
08    if (image == nil)
09        image = [info objectForKey:UIImagePickerControllerOriginalImage];
10     
11    [self performSelector:@selector(saveImage:) withObject:image];
12     
13}
14//用户取消拍照
15-(void)imagePickerControllerDidCancel:(UIImagePickerController *)picker
16{
17    [picker dismissViewControllerAnimated:YES completion:nil];
18}
19 
20//将照片保存到disk上
21-(void)saveImage:(UIImage *)image
22{
23 
24    NSData *imageData = UIImagePNGRepresentation(image);
25    if(imageData == nil)
26    {
27        imageData = UIImageJPEGRepresentation(image, 1.0);
28    }
29     
30    NSDate *date = [NSDate date];
31     
32    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
33    [formatter setDateFormat:@"yyyyMMddHHmmss"];
34    _fileName = [[[formatter stringFromDate:date] stringByAppendingPathExtension:@"png"] retain];
35     
36     
37    NSURL *saveURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:_fileName];
38     
39    [imageData writeToURL:saveURL atomically:YES];
40     
41     
42}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多