UIImagePickerController从本地相册取图片

这个功能其实也很常见,我们登陆qq等界面时换头像时都需要这个UIImagePickerController来完成

例如像这样的登录界面,我们一点头像他就会弹出一些提示框,其实就有通过本地相册来换我们的头像。 好了,废话不多说,开车! 首先我们建立一个ImageView在屏幕上

- (void)createImage {
    self.imageHeader = [[UIImageView alloc]init];
    [self.view addSubview:_imageHeader];
    _imageHeader.frame = CGRectMake(0, 0, 100, 100);
    _imageHeader.center = self.view.center;
    _imageHeader.image = [UIImage imageNamed:@"{5286CB3E-46B8-CB84-1E40-5B208D83973E}.jpg"];
    _imageHeader.layer.cornerRadius =  100 / 2;//把图片切成圆
    _imageHeader.clipsToBounds = YES;
    _imageHeader.userInteractionEnabled = YES;// 图片用户交互是关闭的,我们需要点击它发生事件,所以我们要打开用户交互
    UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(handle)];// 加手势
    
    [self.imageHeader addGestureRecognizer:tap];
//  NSUserDefaults 用于储存对象的,永久化存储对象,是一个单例,我们想要将图片永久化的存储到 NSUserDefaults中。
    NSUserDefaults *users = [NSUserDefaults standardUserDefaults];
    if ([users dataForKey:@"imag"]) {
        [_imageHeader setImage:[UIImage imageWithData:[users dataForKey:@"imag"]]];
    }
  }
复制代码
#pragma mark -------系统图片
//点击qq头像触发的事件
// 需要在此VC签订代理 <UINavigationControllerDelegate,UIImagePickerControllerDelegate> 需要同时 签订两个协议
- (void)handle {
    UIImagePickerController *picker = [[UIImagePickerController alloc]init];
    picker.delegate = self;
    picker.allowsEditing = YES;// 是否同意编辑
    [self presentViewController:picker animated:YES completion:^{
        
    }];
    
}
复制代码
#pragma mark -------编辑完照片就会走的方法  保存编辑过的图片
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info {
    //保存编辑照片
    UIImage *image = [info objectForKey:UIImagePickerControllerEditedImage];
    if (image != nil) {
        _imageHeader.image = image;
    }
    NSData *data;
// 判断照片类型
    if (UIImagePNGRepresentation(image)) {
        data = UIImagePNGRepresentation(image);
    }
    else {
        data = UIImageJPEGRepresentation(image, 1.0);
        
        
    }
// _imaPath 是定义的一个属性,记录文件管理器(NSFileManager)的文件名
    [[NSFileManager defaultManager] createFileAtPath:_imaPth contents:data attributes:nil];
    NSUserDefaults *user =[NSUserDefaults standardUserDefaults];
// 从   NSUserDefaults 中取出照片
    [user setObject:data forKey:@"imag"];
    [self dismissViewControllerAnimated:YES completion:nil];
 }
复制代码

点击头像时会出现这样的

点进去就可以编辑照片了

其实并不难 ,但是这个挺常用的,希望对大家有用!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值