UIImage转NSData和NSData转UIImage

作者: Stormstout | 来源:发表于2016-06-06 21:54 被阅读12241次

    内容很简单,只是本人不会写后台,只能用到野狗API,尝试着写一个后台接口,这里只做上传头像和下载效果,其中用到UIImage和NSData的互转,所以写日记记录下,和大家分享下.

    //NSData转换为UIImage

     NSData *imageData = [NSData dataWithContentsOfFile: imagePath];
     UIImage *image = [UIImage imageWithData: imageData];
    

    //UIImage转换为NSData

    NSData *imageData = UIImagePNGRepresentation(aimae);
    

    //下面是实例代码

    #pragma mark 选择图片
    //选中图片进入的代理方法
    /**
     *  选好图片调用的代理方法
     *
     *  @param picker      显示选择图片的界面
     *  @param image       选中的图片
     *  @param editingInfo 编辑消息描述
     */
    - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
    {
        [picker dismissViewControllerAnimated:YES completion:nil];//推回弹出的相册或照相机
        
        //获取图片
        UIImage  *imgh=info[UIImagePickerControllerOriginalImage];
        
        userHeadImageView.image=imgh;//设置头像
    
        // 在网络开发中,上传文件时,是文件不允许被覆盖,文件重名
        // 要解决此问题,
        
        // 可以在上传时使用当前的系统时间作为文件名
        NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
        // 设置时间格式
        formatter.dateFormat = @"yyyy-MM-dd-HH-mm-ss";
        NSString *str = [formatter stringFromDate:[NSDate date]];
        
        //将图片转为data数据
        NSData *imageData = UIImageJPEGRepresentation(imgh, 0.5);
        
        //将数据转为base64字符串
        NSString *datastr = [imageData base64EncodedString];
        
        //向网络上传头像
        [self GetDataStr:str DataStr:datastr];
    }
    
    //上传头像到服务器
    -(void)GetDataStr:(NSString *)str DataStr:(NSString *)datastr
    {
        //获取用户信息字典
        userData = [UserData GetUserData];
        NSString *userName =userData.mDic[@"UserName"];
        
        //创建引用
        Wilddog *myRootRef = [[Wilddog alloc]initWithUrl:@"https://--此处为自己申请的野狗API用户名--.wilddogio.com/User"];
        
    #pragma mark 向服务器添加一个字典(注册)
        //向服务器创建一个名为User的字典
        
        Wilddog *usersRef = [myRootRef childByAppendingPath: userName];
        //设置需要更新的数组名
        Wilddog *hopperRef = [usersRef childByAppendingPath: @"UserHeadImage"];
    
        //设置要更新的内容
        NSDictionary *nickname = @{
                                    @"ImageName": str,
                                    @"ImageData":datastr,
                                      };
    
        //将内容上传服务器
        [hopperRef updateChildValues: nickname];
    }
    
    //最后是加载用户头像 ,以上我没做过多的操作,数据是用户登录的时候存储的,上传图片到服务器,如果用户没有头像字典则自动添加一个字典,我这里只是展示数据,此方法在viewDidLoad中调用,
    -(void)LoadData
    {
        userData = [UserData GetUserData];
        
        NSDictionary *dic = [[NSDictionary alloc]init];
        dic = userData.mDic[@"UserHeadImage"];
        
        //获取NSData数据
        NSData *dataStr = [NSData dataFromBase64String:dic[@"ImageData"]]; 
        
        UIImage *image = [UIImage imageWithData:dataStr];
        
        userHeadImageView.image = image;
    }
    

    //刚用简书,还没细细研究,字体颜色不好看勿怪

    相关文章

      网友评论

        本文标题:UIImage转NSData和NSData转UIImage

        本文链接:https://www.haomeiwen.com/subject/hdlddttx.html