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?