Подтвердить что ты не робот

Ошибка представления iOS UIImageJPEGR: Отсутствие файла JPEG: начинается с 0xff 0xd9

Я пишу файл .jpg в свое приложение Каталог документов, например:

NSData *img = UIImageJPEGRepresentation(myUIImage, 1.0);
BOOL retValue = [img writeToFile:myFilePath atomically:YES];

Позже я загружу это изображение обратно в UIImage, используя:

UIImage *myImage = [UIImage imageWithContentsOfFile:path];

Я знаю, что это работает, потому что я могу рисовать изображение в ячейке таблицы, и это нормально. Теперь, если я пытаюсь использовать UIImageJPEGRepresentation (myImage, 1.0), отладчик выводит эти строки:

<Error>: Not a JPEG file: starts with 0xff 0xd9
<Error>: Application transferred too few scanlines

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

4b9b3361

Ответ 1

Изображения не были повреждены, я смог отобразить их правильно. Возможно, проблема связана с ошибкой в ​​UIImage, или, возможно, в документации должно быть более понятно использование imageWithContentsOfFile:.

Я смог удалить сообщение об ошибке, изменив

UIImage *myImage = [UIImage imageWithContentsOfFile:path];

к

NSData *img = [NSData dataWithContentsOfFile:path];
UIImage *photo = [UIImage imageWithData:img];