ios 使用UIImagePickerController 修改頭像

- (void)viewDidLoad  服務器

{  spa

    [super viewDidLoad];  code

    //獲取Documents文件夾目錄    orm

    NSArray *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);    圖片

    NSString *documentPath = [path objectAtIndex:0];    資源

    //指定新建文件夾路徑    string

    NSString *imageDocPath = [documentPath stringByAppendingPathComponent:@"ImageFile"];    it

    //建立ImageFile文件夾    io

    [[NSFileManager defaultManager] createDirectoryAtPath:imageDocPath withIntermediateDirectories:YES attributes:nil error:nil];    class

    //保存圖片的路徑   

    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];  


// 改變圖像的尺寸,方便上傳服務器
- (UIImage *) scaleFromImage: (UIImage *) image toSize: (CGSize) size
{
    UIGraphicsBeginImageContext(size);
    [image drawInRect:CGRectMake(0, 0, size.width, size.height)];
    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return newImage;
}
相關文章
相關標籤/搜索