Używam writeImageToSavedPhotosAlbum:metadata:completionBlock: do zapisywania obrazów w rolce aparatu (dane GPS są w słowniku przekazanym do metadanych). Jednak zdjęcia są źle zorientowane (jak odwracam urządzenie podczas robienia zdjęć).Jak zapisać zdjęcie z ustawieniem EXIF (GPS) I na telefonie iPhone?
Istnieje inna funkcja writeImageToSavedPhotosAlbum: orientation: completionBlock: ale nie będę w stanie przekazać danych EXIF.
Zgodnie z dokumentacją istnieje własność kCGImagePropertyOrientation do ręcznego ustawienia orientacji, ale mam problem z wykryciem bieżącej orientacji urządzenia podczas robienia zdjęcia i jego zapisywania.
Czy ktoś osiągnął zapis obrazu z danymi EXIF i właściwą orientacją? Każda forma pomocy jest mile widziana.
Oto mój kod:
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
image = [info objectForKey:@"UIImagePickerControllerOriginalImage"];
[self dismissModalViewControllerAnimated:YES];
[imageView setImage:image];
if(sourceCamera) {
//EXIF and GPS metadata dictionary
(...)
//saving image
ALAssetsLibrary *al = [[ALAssetsLibrary alloc] init];
[al writeImageToSavedPhotosAlbum:[image CGImage]
metadata:dict
completionBlock:^(NSURL *assetURL, NSError *error) {
if (error == nil) {
NSLog(@"saved");
} else {
NSLog(@"error");
}
}];
[al release];
}
}
Najlepsze życzenia,
a.
Dziękuję za odpowiedź, jesteś świetny! UIImageOrientation, to takie proste ... nie można znaleźć żadnego pojedynczego rozwiązania dla kCGImagePropertyOrientation i UIImageOrientation. Po prostu uwielbiam tę tablicę! – akashic
Anomie, to ma sens, ale gdzie w kodeksie PO powinien on rzeczywiście zrobić ustawienie i jak? OP musi w rzeczywistości ustawić wartość dla kCGImagePropertyOrientation, prawda? –
@BenjaminWheeler należy zmodyfikować słownik metadanych "ALAsset". Kiedy już masz swój "ALAsset", pobierz słownik metadanych w ten sposób: 'myMetadataDictionary = [[metadane myAsset defaultRepresentation]]. Następnie ustaw orientację: 'myMetadataDictionary [(NSString *) kCGImagePropertyOrientation] = orientation', gdzie' orientation' jest jedną z liczb całkowitych podanych przez @Anomie powyżej. –