我已经学会了两种方法(可能还有更多...)来上传服务器上的图像..
1)创建NSData并将其添加到请求正文中 2)创建字节数组并将其发送到json,如简单数组
1)创建NSData并将其添加到请求正文中
使用此代码从图像创建NSData
NSData *imageData = UIImagePNGRepresentation(myimage);
然后将其添加到请求正文中
NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];
[request setURL:[NSURL URLWithString:urlString]];
[request setHTTPMethod:@"POST"];
[body appendData:[NSData dataWithData:imageData]];
[request setHTTPBody:body];
执行请求,图像将上传到服务器上。
2)创建字节数组并以简单数组
中的json发送创建图像的字节数组
NSData *imageData = UIImagePNGRepresentation(myimage);
const unsigned char *bytes = [imageData bytes];
NSUInteger length = [imageData length];
NSMutableArray *byteArray = [NSMutableArray array];
for (NSUInteger i = 0; i<length; i++)
{
[byteArray addObject:[NSNumber numberWithUnsignedChar:bytes[i]]];
}
而不是像任何其他数组一样使用JSON发送请求
但这是更好的解决方案,还是有更快的方法..
答案 0 :(得分:1)
最简单,最快捷的方法是使用普通的http POST和html发送图像。
因为您在任何情况下都使用NSMutableRequest发送POST请求。因此,唯一重要的是数据的大小和获取原始图像所需的处理。因此,为了实现性能的显着改进,您必须确保使用最少数量的块通过Web发送项目,并且处理开销最小。
希望article可以帮助您做出选择。
如果您需要,可以使用某些压缩方案(如this)进一步缩小尺寸,如果您有固定尺寸问题。
答案 1 :(得分:0)
两种方式都是O(n),但是我对NSData方法的天真看法表明它对数据与字节数组方法的复制传递少了1次。发现差异的最佳(唯一?)方式(以及差异对用户体验是否重要,这是非常不可能的)是进行测试。
如果两种方法的体型相似,则可以简化测试。这将消除将实际帖子作为变量所花费的时间。然后只测量每个方向准备帖子所需的时间。