您的位置:首页 > 产品设计 > UI/UE

iOS UI篇15- 个人中心设置头像

2016-08-06 11:24 411 查看
iOS调用相机和相册并编辑保存到本地(个人中心设置头像)

第一步:导入协议

<UINavigationControllerDelegate,UIImagePickerControllerDelegate>


#import <UIKit/UIKit.h>

@interface ViewController : UIViewController<UINavigationControllerDelegate,UIImagePickerControllerDelegate>
@property (weak, nonatomic) IBOutlet UIScrollView *imageScroll;
@property (weak, nonatomic) IBOutlet UIImageView *photoImage;

@end


第二步:打开相机

#pragma mark - 从相机获取图片
- (IBAction)photoFromCamera:(id)sender {

if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])
{
UIImagePickerControllerSourceType sourceType = UIImagePickerControllerSourceTypeCamera;//设置类型为相机
UIImagePickerController *picker = [[UIImagePickerController alloc] init];//初始化
picker.delegate = self;//设置代理
picker.allowsEditing = YES;//设置照片可编辑
picker.sourceType = sourceType;
//设置是否显示相机控制按钮 默认为YES
picker.showsCameraControls = YES;

//        //创建叠加层(例如添加的相框)
//        UIView *overLayView=[[UIView alloc]initWithFrame:CGRectMake(0, 120, 320, 254)];
//        //取景器的背景图片,该图片中间挖掉了一块变成透明,用来显示摄像头获取的图片;
//        UIImage *overLayImag=[UIImage imageNamed:@"zhaoxiangdingwei.png"];
//        UIImageView *bgImageView=[[UIImageView alloc]initWithImage:overLayImag];
//        [overLayView addSubview:bgImageView];
//        picker.cameraOverlayView=overLayView;

//选择前置摄像头或后置摄像头
picker.cameraDevice=UIImagePickerControllerCameraDeviceFront;
[self presentViewController:picker animated:YES completion:^{
}];
}
else {
NSLog(@"该设备无相机");
}

}


第三步:调用相册

#pragma mark - 从相册获取图片
- (IBAction)photoFromAlbum:(id)sender {
//首先需要判断资源是否可用
if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]) {

UIImagePickerController *pickerImage = [[UIImagePickerController alloc] init];

pickerImage.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
//获得相机模式下支持的媒体类型
//        pickerImage.mediaTypes = [UIImagePickerController availableMediaTypesForSourceType:pickerImage.sourceType];
pickerImage.delegate = self;
//设置允许编辑
pickerImage.allowsEditing = YES;

[self presentViewController:pickerImage animated:YES completion:^{
}];
}
}


第四步:从相册选择图片后操作

#pragma mark - 从相册选择图片后操作
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {

//NSLog(@"%@",info);

//获取源图像(未经裁剪)
//    UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];

//获取裁剪后的图像
UIImage *image = info[UIImagePickerControllerEditedImage];

//将照片存到媒体库
UIImageWriteToSavedPhotosAlbum(image, self, @selector(image:didFinishSavingWithError:contextInfo:), NULL);

self.photoImage.image = image;

//将照片存到沙盒
[self saveImage:image];

[picker dismissViewControllerAnimated:YES completion:^{
}];
}


第五步:照片存到本地后的回调

#pragma mark - 照片存到本地后的回调
- (void)image:(UIImage*)image didFinishSavingWithError:(NSError*)error contextInfo:(void*)contextInfo{
if (!error) {
NSLog(@"存储成功");
} else {
NSLog(@"存储失败:%@", error);
}
}


第六步:保存图片

#pragma mark - 保存图片
- (void) saveImage:(UIImage *)currentImage {
//设置照片的品质
NSData *imageData = UIImageJPEGRepresentation(currentImage, 0.5);

NSLog(@"%@",NSHomeDirectory());
// 获取沙盒目录
NSString *filePath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/currentImage.png"];
// 将图片写入文件
[imageData writeToFile:filePath atomically:NO];
//将选择的图片显示出来
//    [self.photoImage setImage:[UIImage imageWithContentsOfFile:filePath]];

}


第七步:取消操作调用

#pragma mark - 取消操作时调用
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker {
[picker dismissViewControllerAnimated:YES completion:^{
}];
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ios ui