iPhone iOS при сохранении данных, полученных из UIImageJPEGRepresentation(), завершается сбоем во второй раз: ImageIO: CGImageRead_mapData 'open' failed

Я столкнулся со странной проблемой при работе с UIImage.

Я выполняю синхронизацию с Dropbox и должен хранить свои изображения как локальные файлы. Для этого я сохраняю их, используя UIImagePNGRepresentation(image)или UIImageJPEGRepresentation(image, 0.66)

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

В следующий раз, когда пользователь повторно открывает приложение, я считываю изображение обратно из файла, используя

[UIImage imageWithContentsOfFile:fullImagePath]

Это работает один раз.

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

//saving the image
NSData* data = isPNG?UIImagePNGRepresentation(image):UIImageJPEGRepresentation(image, 0.66);
BOOL success =   [data writeToFile:filepath atomically:YES];
if(!success)
{
    DLog(@"failed to write to file: %@",filepath );
}


//loading the image
[UIImage imageWithContentsOfFile:fullImagePath]

Я получаю эту ошибку, когда пытаюсь повторно сохранить изображение, которое было ранее преобразовано в JPEG или PNG.

2012-05-21 08:16:06.680   file already exists: NO
ImageIO: CGImageRead_mapData 'open' failed '/var/mobile/Applications/C1312BF8-C648-4397-82F3-D93E4FAAD35F/Documents/imageData/LogoImage.jpg'
error = 2 (No such file or directory)
May 21 08:16:06  <Error>: ImageIO: JPEG Not a JPEG file: starts with 0xff 0xd9
May 21 08:16:06  <Error>: ImageIO: JPEG Application transferred too few scanlines

Мне кажется, что эта ошибка возникает из-за того, что я пытаюсь повторно сохранить изображение как JPEG еще раз. Если я попрошу представление отобразить себя в контексте (фактически создав новое изображение), ошибка не произойдет.

Кто-нибудь знает, что я делаю не так? Я пропускаю какие-то метаданные, пытаясь преобразовать UIImage в данные, перезагрузить его и попытаться преобразовать еще раз после отображения пользователю?

10
задан Gilles 'SO- stop being evil' 21 May 2012 в 18:11
поделиться