una ubicacion renombrar poner para mac fotos foto fecha datos creacion con como cambiar aplicacion ios uiimage uiimagepickercontroller cgimage camera-overlay

ios - ubicacion - Superposición de cámara con foto de usuario no guardada como editada



poner fecha en fotos iphone 7 (1)

Estoy usando una imagen transparente con un recorte para que un usuario inserte / tome su propia imagen. Por alguna razón, al usar UIImagePickerControllerEditedImage y recortar la foto tomada por el usuario, la imagen no se guarda como se editó; ver foto por ejemplo.

Mi problema es que la imagen no guarda exactamente cómo se editó la foto. (es decir, recortada / redimensionada).

Configurando el UIImagePicker

-(void)choosePhotoDialog:(id)sender { OverlayView * overlay = [[OverlayView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH_IPHONE, SCREEN_HEIGTH_IPHONE) andPhoto:[dict objectForKey:@"imageUrl"]]; [overlay setUserInteractionEnabled: NO]; UIImagePickerController * picker = [[UIImagePickerController alloc] init]; [picker setSourceType: UIImagePickerControllerSourceTypeCamera]; [picker setDelegate: self]; [picker setAllowsImageEditing: YES]; [picker setShowsCameraControls: YES]; [picker setNavigationBarHidden: YES]; [picker setWantsFullScreenLayout: YES]; [picker setCameraOverlayView: overlay]; [self presentModalViewController:picker animated:YES]; [picker release]; }

Después de editar la imagen:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { SDWebImageManager * manager = [SDWebImageManager sharedManager]; UIImage * cachedImage = [manager imageWithURL: [NSURL URLWithString: @"http://www.someurl.com/test.png"]]; UIImage * userOriginal = [info valueForKey:UIImagePickerControllerEditedImage]; /* combining the overlay and the user-photo */ UIGraphicsBeginImageContext( CGSizeMake(640,960) ); /* for some reason I have to push the user-photo down 60 pixels for it to show correctly as it was edited. */ [userOriginal drawAtPoint:CGPointMake(0,60)]; [cachedImage drawAtPoint:CGPointMake(0,0)]; UIImage * draft = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); UIImageWriteToSavedPhotosAlbum( draft, self, @selector(image:didFinishSavingWithError:contextInfo:), nil ); }

Además, hay espacios en blanco de la parte de "recorte" de edición, como se muestra a continuación:


Creo que esto se debe a que la foto editada no incluye las partes ocultas por la superposición de marcos semitransparentes que se muestra como parte del editor de imágenes estándar de iOS. (Los 60px que has encontrado que debes compensar son los 60px de la mitad superior de esta superposición).

Puede extraer y expandir la clave UIImagePickerControllerCropRect del diccionario de info y hacer la edición nuevamente en UIImagePickerControllerOriginalImage para obtener la imagen resultante que desea.