上传个人头像,可以说每个app都会有此功能,可以从相册里面选择图片,也可以从摄像头获取图片。废话不多说,直接上代码,仅供参考!以后可以考虑把我的工具类贴出来,等我把他完善些再说吧!
#pragma mark - 上传一张图片
- (void)upLoadingOneImageWithName:(NSString *)picName currentController:(ViewController *)viewController success:(successBlock)success failure:(failedBlock)failure;
{
_picName = picName;
_viewController = viewController;
_success = success;
_failure = failure;
[self re_election];
}
#pragma mark 上传头像
-(void)re_election
{
_photoActionSheet = [[UIActionSheet alloc]initWithTitle:nil delegate:self cancelButtonTitle:@"取消" destructiveButtonTitle:@"本地相册上传" otherButtonTitles:@"拍照上传", nil];
[_photoActionSheet showInView:_viewController.view];
}
- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
{
if ([actionSheet isEqual:_photoActionSheet])
{
switch (buttonIndex) {
case 0:
[self localPhoto];
break;
case 1:
[self takePhoto];
break;
default:
break;
}
}
}
//本地图片
-(void)localPhoto
{
if (pickerController == nil)
{
pickerController = [UIImagePickerController new];
pickerController.delegate = self;
pickerController.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
//设置选择后的图片可被编辑
pickerController.allowsEditing = YES;
pickerController.videoQuality = UIImagePickerControllerQualityTypeLow;
}
[_viewController presentViewController:pickerController animated:YES completion:nil];
}
//拍照
- (void)takePhoto
{
UIImagePickerControllerSourceType sourceType = UIImagePickerControllerSourceTypeCamera;
if ([UIImagePickerController isSourceTypeAvailable: UIImagePickerControllerSourceTypeCamera])
{
pickerController=[UIImagePickerController new];
pickerController.delegate=self;
//设置拍照后的图片可被编辑
pickerController.allowsEditing=YES;
pickerController.sourceType=sourceType;
pickerController.showsCameraControls=YES;
[_viewController presentViewController:pickerController animated:YES completion:nil];
}else
{
NSLog(@"模拟其中无法打开照相机,请在真机中使用");
}
}
#pragma mark 当选择一张图片后进入这里
-(void)imagePickerController:(UIImagePickerController*)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
NSString *type;
type = [info objectForKey:UIImagePickerControllerMediaType];
//当选择的类型是图片
if ([type isEqualToString:@"public.image"])
{
//先把图片转成NSData
UIImage * image;
image= [info objectForKey:@"UIImagePickerControllerEditedImage"];
[self setImage:image];
}
[picker dismissViewControllerAnimated:YES completion:nil];
}
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker
{
[picker dismissViewControllerAnimated:YES completion:nil];
}
-(void)setImage:(UIImage*)image
{
NSDictionary *dict = [MyData fileManager:@"user"];
[self deleteOneImage:dict[@"pic"] BlockWithSuccess:^(NSDictionary *dic) {
[self ossPostImage:@{@"image":image, @"name":_picName} BlockWithSuccess:^(NSDictionary *dic) {
_success(dic);
_success = nil;
_picName = nil;
_viewController = nil;
} failedBlock:^(NSError *error) {
_failure(error);
_failure = nil;
_picName = nil;
_viewController = nil;
}];
} failedBlock:^(NSError *error) {
_failure(error);
_failure = nil;
_picName = nil;
_viewController = nil;
}];
}
封装好了,以后就是一句代码的事,比较简单,参考一下吧!