将多个图像发送到服务器

时间:2013-12-02 06:23:29

标签: ios json uiimage nsurlrequest

我目前正在开发iPhone反馈类型的应用程序。用户可以从相机拍摄多张图像。他也可以提供反馈和评论。所以,我需要将文本和图像发送到服务器。为此我创建了一个具有所有属性(所有文本和图像)的实体类。因此,当时我只需要使用单个php网址通过POST发送超过70个缩略图。由于JSON数据的大内存大小我们可以使用他的图像UUID而不是数据将图像发送到服务器吗?

默认情况下,POST的最大限制大约是8MB。我们可以将图像UUID发送到服务器而不是图像数据还是有其他方式吗?

这是我的代码:

+ (NSString *)getNewGUID
{
    CFUUIDRef theUUID = CFUUIDCreate(NULL);
    CFStringRef string = CFUUIDCreateString(NULL, theUUID);
    CFRelease(theUUID);
    return (__bridge NSString *)string;
}

如果我将使用图像UUID,那么图像是否会在其他iPhone设备中显示?

请帮帮我。

1 个答案:

答案 0 :(得分:0)

uuid不包含图片包含的所有信息,并且服务器无法获得完整图像,因此它无法仅通过uuids在其他设备上显示这些图像。您必须自己上传图片。

即使Base64编码的二进制数据(将图像转换为纯文本)也是原始数据大小的1.37倍,大致根据definition in the ECMA 5.1 spec

要减少客户端和服务器之间传输的数据大小,您可以执行一些图像大小调整工作,例如:

- (UIImage*)resizeImage {
    CGRect drawRect = RECT_WITH_NEW_SIZE_HERE;
    CGSize newSize = drawRect.size;

    UIGraphicsBeginImageContext(newSize);
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextClearRect(context, CGRectMake(0, 0, newSize.width, newSize.height));

    CGContextSetInterpolationQuality(context, kCGInterpolationMedium);

    [YOUR_IMAGE drawInRect:drawRect blendMode:kCGBlendModeNormal alpha:1];

    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    return image;
}