Обратное преобразование NSData в UIImage? - PullRequest
2 голосов
/ 27 июня 2011

В приложении для iPhone я загружаю изображение JPG с сервера, используя стандартный HTTP-запрос.Данные возвращаются как NSData, который я могу преобразовать в UIImage, используя функцию [UIImage imageWithData:responseData].У меня вопрос, могу ли я преобразовать представление UIImage моего изображения обратно в тот же NSData, из которого оно получено?Я знаю о функции UIImageJPEGRepresentation(), но я попробовал это с качеством сжатия 1, и это дало мне что-то отличное от оригинального NSData.

Ответы [ 2 ]

3 голосов
/ 27 июня 2011

Я думаю (на самом деле) ваша проблема, вероятно, в том, что UIImage не хранится в формате JPEG внутри. Из-за того, как работает сжатие JPEG, маловероятно, что преобразование обратно в JPEG может дать вам точно такие же данные. Есть ли какая-то причина, по которой вы не можете хранить оригинальные NSData?

2 голосов
/ 27 июня 2011

Вы должны использовать UIImagePNGRepresentation (), а также отправлять файлы в формате PNG на устройство. PNG намного эффективнее загружать и экономить на устройстве. Это стандартный метод преобразования массива байтов (NSData) в / из изображения.

Если вы застряли с данными JPEG, UIImageJPEGRepresentation () является правильным способом вернуть его обратно в объект NSData. Он может не совпадать, в зависимости от того, как Apple реализовал этот метод, он может обновлять некоторые данные, оставаясь при этом технически неизменным (отображая то же самое).

...