iOSiOS开发 oc中重要知识点iOS开发中常用第三方框架的深度学习

UIImage转NSData和NSData转UIImage

2016-06-06  本文已影响12241人  Stormstout

内容很简单,只是本人不会写后台,只能用到野狗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;
}

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

上一篇下一篇

猜你喜欢

热点阅读