iPhone 如何将大图像与 JSON 文件一起发送?我应该将它嵌入到 JSON 中还是单独发送?

标签 iphone objective-c ios json uiimage

我正在尝试创建一种将我的应用程序界面保存在 JSON 文件中的方法。虽然我可以通过它们的框架和/或中心点定义静态元素,但界面确实包括从照片库中选择的单个图像。因为一些 iPhone 有 8MP 相机,我可以预期一些图像会是非常大。

我希望能够保存此界面并通过电子邮件发送它,以便其他应用用户可以重新打开该文件并看到包含图像的相同界面。

目前我正在使用 JSONKit 将我的数据保存到一个 JSON 对象中。这意味着电子邮件将包含一个包含布局参数和图像的 JSON 文件。我从来没有使用过这么大的 JSON 文件,所以问题是 - JSON 中有几兆的图像数据会出现解析问题吗? 或者我应该选择其他一些文件容器:第一部分JSON 文件,第二部分原始图像数据,然后将该文件分成一个 JSON 字符串和一个原始数据字符串?

这就是我目前用来获取 JSON 文件的方法。将NSData加入JSON后,convert to json方法返回nil

    NSString* currentURL = webView.request.mainDocumentURL.absoluteString;
    [dictionary setValue:currentURL forKey:@"webViewAddress"];

//this call correctly returns the json string
    NSLog(@"%@", [dictionary JSONString]);
    NSLog(@"+++++++++++++++++++++++++++++++++++++");
    NSData* imageData = UIImagePNGRepresentation(arOverlayView.image);
//after this call, the json returns nil
    [dictionary setValue:imageData forKey:kimageData];
      NSLog(@"%@", [dictionary JSONString]); 

最佳答案

如果您使用电子邮件作为传输机制,您的二进制数据将不得不在其生命周期的某个时刻以类似于 Base64 编码的形式结束。电子邮件没有“原始”格式,只有文本。

充其量你可以实现Base85比Base64更高效的编码

因此,除非您发明自己的传输机制 - 例如基于点对点 TCP/IP 的链接,否则您将不得不吸收大文件。

关于iPhone 如何将大图像与 JSON 文件一起发送?我应该将它嵌入到 JSON 中还是单独发送?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9760707/

相关文章:

ios - 使用 OCMockito 测试 Storyboard的最佳方式

ios - 从 String 到 NSDate 的错误转换

ios - 无法读取未定义的属性 'string' 试图通过 react-native-create-bridge 理解 React Native Native 模块

ios - AFNetworking 与不可靠的 wifi - 检测/重试连接超时

ios - 如何将 swift 类导入 ViewController?

iphone - 在 iOS 中强制执行音频采样率

iphone - 如何通过 UISlider 更新 iPhone 上的音乐音量?

iphone - 如何设置 iPod 音量而不影响其他音量?

ios - 将 Storyboard转换为 XIB

ios - 使用自定义 NSURLProtocol 在 UIWebView 中通过 AJAX 调用加载文本文件失败