Zapisywanie do / pobieranie JPEG z galerii użytkownika bez rekompresji
Próbuję znaleźć sposób na odczyt i zapis obrazów JPEG w galerii użytkownika (roll aparatu) bez ponownego kompresji iOS. UIImage wydaje się być tutaj wąskim gardłem. Jedyną metodą zapisania w znalezionej galerii użytkownika jest UIImageWriteToSavedPhotosAlbum (). Czy istnieje sposób na to?
Na razie moja rutyna wygląda tak
–Zapytaj UIImagePickerController o zdjęcie. A kiedy to zrobiłFinishPickingMediaWithInfo, wykonaj:
NSData *imgdata = [NSData dataWithData:UIImageJPEGRepresentation([info objectForKey:@"UIImagePickerControllerOriginalImage"], 1)];
[imgdata writeToFile:filePath atomically:NO];
–Proces JPEG bezstratnie na dysku.
–Następnie zapisz to:
UIImageWriteToSavedPhotosAlbum([UIImage imageWithContentsOfFile:[self getImagePath]], self, @selector(image:didFinishSavingWithError:contextInfo:), nil);
Oto niewielka animacja, jak wygląda degradacja jakości po 3 przejściach:
To oczywiście pogarsza się za każdym razem, gdy to robię, ale nie mogłem zautomatyzować części wybierania obrazu, aby w pełni przetestować go dla 50/100/1000 cykli.