在使用app时,从相册中选取图片作为头像是很常用的操作,首先打开相册选择图片,然后将图片保存至本应用的document,最后将document中图片的路径保存至NSUserDefaults和服务器。
//从相册中选取图片或拍照
- (void)btnActionForEditPortrait:(id) sender {
UIImagePickerController *picker = [[UIImagePickerController alloc] init];
picker.delegate = self;
picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
picker.allowsEditing = YES;
[self presentViewController:picker animated:YES completion:NULL];
}
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
_avatar = info[UIImagePickerControllerOriginalImage];
[self saveImage:_avatar WithName:@"userAvatar"];
//处理完毕,回到个人信息页面
[picker dismissViewControllerAnimated:YES completion:NULL];
[_tableView reloadData];
}
//保存图片
- (void)saveImage:(UIImage *)tempImage WithName:(NSString *)imageName
{
NSData* imageData = UIImagePNGRepresentation(tempImage);
NSString* documentPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString* totalPath = [documentPath stringByAppendingPathComponent:imageName];
//保存到 document
[imageData writeToFile:totalPath atomically:NO];
//保存到 NSUserDefaults
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults setObject:totalPath forKey:@"avatar"];
//上传服务器
[[HSLoginClass new] uploadAvatar:totalPath];
}
//从document取得图片
- (UIImage *)getImage:(NSString *)urlStr
{
return [UIImage imageWithContentsOfFile:urlStr];
}