哪种是在服务器上上传图像的更好(更快)的方法

时间:2014-07-10 13:58:07

标签: ios image-uploading

我已经学会了两种方法(可能还有更多...)来上传服务器上的图像..

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发送请求

但这是更好的解决方案,还是有更快的方法..

2 个答案:

答案 0 :(得分:1)

最简单,最快捷的方法是使用普通的http POST和html发送图像。

因为您在任何情况下都使用NSMutableRequest发送POST请求。因此,唯一重要的是数据的大小和获取原始图像所需的处理。因此,为了实现性能的显着改进,您必须确保使用最少数量的块通过Web发送项目,并且处理开销最小。

希望article可以帮助您做出选择。

如果您需要,可以使用某些压缩方案(如this)进一步缩小尺寸,如果您有固定尺寸问题。

答案 1 :(得分:0)

两种方式都是O(n),但是我对NSData方法的天真看法表明它对数据与字节数组方法的复制传递少了1次。发现差异的最佳(唯一?)方式(以及差异对用户体验是否重要,这是非常不可能的)是进行测试。

如果两种方法的体型相似,则可以简化测试。这将消除将实际帖子作为变量所花费的时间。然后只测量每个方向准备帖子所需的时间。