iOS UIImageJPEGRepresentation ошибка: не файл JPEG: начинается с 0xff 0xd9 - PullRequest
11 голосов
/ 22 февраля 2011

Я записываю файл .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

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

1 Ответ

21 голосов
/ 25 апреля 2011

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

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

UIImage *myImage = [UIImage imageWithContentsOfFile:path];

до

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