iPhone, как отправить большое изображение вместе с файлом JSON? Должен ли я встроить его в JSON или отправить отдельно? - PullRequest
0 голосов
/ 18 марта 2012

Я пытаюсь создать способ сохранить интерфейс моего приложения в файле JSON.В то время как статические элементы, которые я могу определить по их рамкам и / или центральным точкам, интерфейс включает одно изображение, выбранное из библиотеки фотографий. Поскольку некоторые айфоны имеют 8-мегапиксельные камеры, я могу ожидать, что некоторые изображения будут оченьLarge.

Я хотел бы иметь возможность сохранить этот интерфейс и отправить его по электронной почте, , чтобы другой пользователь приложения мог повторно открыть файл и увидеть тот же интерфейс с включенным изображением..

В настоящее время я использую JSONKit для сохранения своих данных в объект JSON.Это означает, что письмо будет содержать один JSON-файл, содержащий параметры макета и изображение.Я никогда не работал с такими большими файлами JSON, поэтому вопрос в том, что * * * * * * * * будет иметь несколько мегабайт данных в JSON с проблемами синтаксического анализа? Или я должен выбрать какой-нибудь другой контейнер файла, который будет иметь: первая часть JSONфайл, вторая часть необработанных данных изображения, а затем разделить этот файл на строку JSON и строку необработанных данных?

Это то, что я сейчас использую, чтобы получить файл JSON.После добавления NSData в JSON метод преобразования в 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]); 

1 Ответ

2 голосов
/ 18 марта 2012

Если вы используете электронную почту в качестве транспортного механизма, ваши двоичные данные должны будут в конечном итоге выглядеть как Base64, закодированные в какой-то момент своей жизни. Для электронной почты нет «сырого» формата, есть только текст.

В лучшем случае вы можете реализовать кодирование Base85 , которое более эффективно, чем Base64

Таким образом, вам придется смириться с большими размерами файлов, если вы не изобрели свой собственный транспортный механизм - такой как двухточечная связь на основе TCP / IP.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...