将图像URL编码为NSData

时间:2013-10-16 02:56:30

标签: ios objective-c json

我想从网址中获取图片:

http://imgur.com/gallery/ihHQvP1

然后将其转换为NSData,以便我能够将其解析到服务器。服务器只接受NSData而不接受图像链接。我从相机中得到以下信息:

 NSData *pictureData = UIImagePNGRepresentation([self scaleImage:activityImageView.image toSize:CGSizeMake(230, 230)]);

然后将其放入JSON格式以发送到服务器:

jsonPostBody= [NSString stringWithFormat:@"{\"activity_id\":\"%@\",\"user_id\":\"%@\",\"activity_title\":\"%@\",\"activity_category_id\":\"%@\",\"activity_description\":\"%@\",\"activity_image\":\"%@\",\"activity_begindate\":\"%@\",\"activity_enddate\":\"%@\", \"activity_time\":\"%@\", \"activity_email\":\"%@\",\"activity_city\":\"%@\",\"activity_where\":\"%@\",\"gotooffer_url\":\"%@\",\"latitude\":\"%@\",\"longitude\":\"%@\"}",[editActivityDict valueForKey:@"activity_id"],singletonObj.userID,title,selectedCategoryString,discription,[Base64 encode:pictureData],begindateConvert,enddateConvert,milatryTime,@"",city,where,entersite,singletonObj.singletonlatitude,singletonObj.singletonlogitude];
                    NSString *urlString=[NSString stringWithFormat:@"%@%@",ROOT_URL,EDIT_ACTIVITY];

正如您所看到的,正文中发送图片的变量是:

[Base64 encode:pictureData]

任何想法?

1 个答案:

答案 0 :(得分:0)

最简单的方法是使用+[NSData dataWithContentsOfURL:options:error:]来获取通过对该URL执行GET请求作为NSData实例返回的数据。但是,这会执行同步 Web请求,建议不要在主线程上执行该请求以避免阻止UI。

为了避免主线程上的同步提取,您可以使用GCD或操作队列将相同的代码放在后台线程中,但最安全的方法是使用NSURLConnection / NSURLRequest,如上所述在this response