UIImagePickerController之打开图片库和相机选择图片修改头像

来源:互联网 发布:淘宝祖国版手办好莱污 编辑:程序博客网 时间:2024/05/17 17:15

1、效果图:



2、主要源代码:

- (void)viewDidLoad{    [super viewDidLoad];    //获取Documents文件夹目录      NSArray *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);      NSString *documentPath = [path objectAtIndex:0];      //指定新建文件夹路径      NSString *imageDocPath = [documentPath stringByAppendingPathComponent:@"ImageFile"];      //创建ImageFile文件夹      [[NSFileManager defaultManager] createDirectoryAtPath:imageDocPath withIntermediateDirectories:YES attributes:nil error:nil];      //保存图片的路径     self.imagePath = [imageDocPath stringByAppendingPathComponent:@"image.png"];   }-(void)viewWillAppear:(BOOL)animated{    [super viewWillAppear:YES];    //根据图片路径载入图片    UIImage *image=[UIImage imageWithContentsOfFile:self.imagePath];    if (image == nil) {        //显示默认        [changeImg setBackgroundImage:[UIImage imageNamed:@"user_photo@2x.png"] forState:UIControlStateNormal];    }else {        //显示保存过的        [changeImg setBackgroundImage:image forState:UIControlStateNormal];    }}- (void)dealloc {    [imagePath release];    [changeImg release];    [super dealloc];}- (IBAction)changeImage:(id)sender {    UIActionSheet *myActionSheet = [[UIActionSheet alloc]                                                        initWithTitle:nil                                    delegate:self                                    cancelButtonTitle:@"取消"                                    destructiveButtonTitle:nil                                    otherButtonTitles: @"从相册选择", @"拍照",nil];     [myActionSheet showInView:self.view];    [myActionSheet release]; }-(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex{    switch (buttonIndex) {        case 0:            //从相册选择            [self LocalPhoto];            break;        case 1:            //拍照            [self takePhoto];            break;        default:            break;    }}//从相册选择-(void)LocalPhoto{    UIImagePickerController *picker = [[UIImagePickerController alloc] init];      //资源类型为图片库    picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;    picker.delegate = self;    //设置选择后的图片可被编辑    picker.allowsEditing = YES;    [self presentModalViewController:picker animated:YES];    [picker release];}//拍照-(void)takePhoto{    //资源类型为照相机    UIImagePickerControllerSourceType sourceType = UIImagePickerControllerSourceTypeCamera;    //判断是否有相机    if ([UIImagePickerController isSourceTypeAvailable: UIImagePickerControllerSourceTypeCamera]){        UIImagePickerController *picker = [[UIImagePickerController alloc] init];        picker.delegate = self;        //设置拍照后的图片可被编辑        picker.allowsEditing = YES;        //资源类型为照相机        picker.sourceType = sourceType;        [self presentModalViewController:picker animated:YES];        [picker release];    }else {        NSLog(@"该设备无摄像头");    }}#pragma Delegate method UIImagePickerControllerDelegate  //图像选取器的委托方法,选完图片后回调该方法  -(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo{        //当图片不为空时显示图片并保存图片    if (image != nil) {          //图片显示在界面上        [changeImg setBackgroundImage:image forState:UIControlStateNormal];                //以下是保存文件到沙盒路径下        //把图片转成NSData类型的数据来保存文件        NSData *data;        //判断图片是不是png格式的文件        if (UIImagePNGRepresentation(image)) {            //返回为png图像。            data = UIImagePNGRepresentation(image);        }else {            //返回为JPEG图像。            data = UIImageJPEGRepresentation(image, 1.0);        }        //保存        [[NSFileManager defaultManager] createFileAtPath:self.imagePath contents:data attributes:nil];            }      //关闭相册界面    [picker dismissModalViewControllerAnimated:YES];}


源码下载地址:http://download.csdn.net/download/rhljiayou/4585011;


原创粉丝点击