Dane zapisywane na iPhone iOS uzyskane z UIImageJPEGRepresentation () zawodzą po raz drugi: ImageIO: CGImageRead_mapData 'open' nie powiodło się

Wpadam na dziwny problem z moją manipulacją UIImage.

Wykonuję synchronizację skrzynki odbiorczej i muszę przechowywać moje obrazy jako pliki lokalne. Aby to zrobić, zapisuję je za pomocąUIImagePNGRepresentation(image) lubUIImageJPEGRepresentation(image, 0.66)

Oto mój typowy przepływ pracy: Użytkownik wybiera obraz lub robi zdjęcie Obraz zostaje przypisany do widoku obrazu UIImage widoku obrazu zostaje zapisany w pliku przy użyciu poniższej metody

Następnym razem, gdy użytkownik ponownie otworzy aplikację, odczytam obraz z pliku za pomocą

[UIImage imageWithContentsOfFile:fullImagePath]

To działa raz.

Po drugim uruchomieniu procedury otrzymuję komunikat o błędzie wymieniony poniżej podczas próby zapisania obrazu na dysku ponownie.

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

Otrzymuję ten błąd, gdy próbuję ponownie zapisać obraz, który został wcześniej przekonwertowany na JPEG lub 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

Wydaje mi się, że ten błąd ma miejsce, ponieważ próbuję ponownie zapisać obraz jako JPEG ponownie. Jeśli poproszę widok, aby renderował się w kontekście (skutecznie tworząc nowy obraz), błąd nie występuje.

Czy ktoś wie, co robię źle? Czy brakuje mi jakiegoś rodzaju metadanych, próbując przekonwertować UIImage na dane, przeładować go i ponownie przekonwertować po wyświetleniu go użytkownikowi?

questionAnswers(1)

yourAnswerToTheQuestion