В приложении для iPhone я загружаю изображение в формате JPG с сервера с помощью стандартного HTTP-запроса. Данные возвращаются как NSData, которые я могу преобразовать в UIImage с помощью функции [UIImage imageWithData:responseData]
. Мой вопрос: могу ли я преобразовать представление моего изображения UIImage обратно в те же NSData, из которых оно возникло? Я знаю о функции UIImageJPEGRepresentation()
, но я попробовал это с качеством сжатия 1, и это дало мне нечто иное, чем исходные NSData.
Обратное преобразование NSData в UIImage?
Ответы (2)
Я думаю (думаю, на самом деле) ваша проблема, вероятно, связана с тем, что UIImage не хранится в формате JPEG внутри. Из-за того, как работает сжатие JPEG, маловероятно, что обратное преобразование в JPEG может дать вам точно такие же данные. Есть ли причина, по которой вы не можете хранить оригинальные NSData?
Вы должны использовать UIImagePNGRepresentation () и также отправлять файлы в формате PNG на устройство. PNG гораздо эффективнее загружать и сохранять на устройстве. Это стандартный метод преобразования массив байтов (NSData) в / из изображения.
Если вы застряли с данными JPEG, UIImageJPEGRepresentation () - правильный способ вернуть их в объект NSData. Он может быть не идентичным, в зависимости от того, как Apple реализовала этот метод, он может обновлять некоторые данные, технически оставаясь тем же изображением (будет отображать то же самое).