iPhone iOS salvando dados obtidos de UIImageJPEGRepresentation () falha na segunda vez: ImageIO: CGImageRead_mapData 'open' failed

Eu estou correndo em um problema estranho com a minha manipulação UIImage.

Estou fazendo uma sincronização de caixa de depósito e tenho que armazenar minhas imagens como arquivos locais. Para fazer isso, eu os salvei usando oUIImagePNGRepresentation(image) ouUIImageJPEGRepresentation(image, 0.66)

Aqui está meu fluxo de trabalho típico: O usuário seleciona uma imagem ou tira uma foto A imagem é atribuída a um imageView O UIImage da visualização da imagem é salvo em um arquivo usando o método abaixo

Da próxima vez que o usuário reabrir o aplicativo, eu leio a imagem de volta do arquivo usando

[UIImage imageWithContentsOfFile:fullImagePath]

Isso funciona uma vez.

Na segunda vez que eu corro pela rotina, recebo a mensagem de erro listada abaixo quando tento salvar a imagem no disco novamente.

//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]

Estou recebendo este erro quando tento salvar novamente uma imagem que tenha sido convertida anteriormente para JPEG ou 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

Parece-me que este erro está acontecendo devido a eu tentar salvar novamente a imagem como JPEG novamente. Se eu pedir ao view para se renderizar no contexto (criando efetivamente uma nova imagem), o erro não acontece.

Alguém sabe o que estou fazendo errado? Estou perdendo algum tipo de metadado tentando converter um UIImage em dados, recarregando-o e tentando convertê-lo novamente depois de exibi-lo para o usuário?

questionAnswers(1)

yourAnswerToTheQuestion