相册选取图片和照相机取图片

选取图片可以从设备图片库或者从照相机抓取,系统为我们提供的类UIImagePickerController就是一个图像选择器。

UIImagePickerController的主要属性是sourceType,其定义如下

按顺序说明:

UIImagePickerControllerSourceTypePhotoLibrary 为相簿

UIImagePickerControllerSourceTypeCamera        为照相机

UIImagePickerControllerSourceTypeSavedPhotosAlbum   相机胶卷

UIImagePickerController 的委托对象必须实现UINavigationControllerDelegate,UIImagePickerControllerDelegate委托协议,通过其委托对象可以看出其要继承的协议有哪几种,如下图:

 

UIImagePickerControllerDelegate中定义了两个方法,选择完成时调用的方法和选择取消调用的方法,

如下:

下面直接上代码:

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController
<UIImagePickerControllerDelegate,UINavigationControllerDelegate>


@property (strong, nonatomic) UIImagePickerController *imagePicker;

@property (retain, nonatomic) IBOutlet UIImageView *imageView;

- (IBAction)pickPhotoLibrary:(id)sender;

- (IBAction)pickPhotoCamera:(id)sender;

@end

实现文件.m 代码

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
	// Do any additional setup after loading the view, typically from a nib.
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

- (void)dealloc {
    [_imageView release];
    [super dealloc];
}

- (IBAction)pickPhotoLibrary:(id)sender {
    if (_imagePicker == nil) {
        _imagePicker = [[UIImagePickerController alloc] init];
    }
    _imagePicker.delegate = self;
    //数据源类型为相册
    _imagePicker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;
    
    [self presentViewController:_imagePicker animated:YES completion:nil];
}

- (IBAction)pickPhotoCamera:(id)sender {
    //判断相机是否可用
    if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {
        if (_imagePicker == nil) {
            _imagePicker = [[UIImagePickerController alloc] init];
        }
        _imagePicker.delegate = self;
        _imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
        
        [self presentViewController:_imagePicker animated:YES completion:nil];
    } else {
        
        NSLog(@"照相机不可用。");
    }
}


- (void) imagePickerControllerDidCancel: (UIImagePickerController *) picker {
    _imagePicker.delegate = nil;
    
    [self dismissViewControllerAnimated:YES completion:nil];
}

- (void) imagePickerController: (UIImagePickerController *) picker
 didFinishPickingMediaWithInfo: (NSDictionary *) info {
    //完成选择后,取出没有被编辑过的图片
    UIImage *originalImage = (UIImage *) [info objectForKey:
                                          UIImagePickerControllerOriginalImage];
    
    self.imageView.image = originalImage;
    self.imageView.contentMode = UIViewContentModeScaleAspectFill;
    
    _imagePicker.delegate = nil;
    [self dismissViewControllerAnimated:YES completion:nil];
    
}


@end

 看一下在真机中的照相机效果图:

 

转载于:https://www.cnblogs.com/tianlin106/p/4561049.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值