que - API para capturar fotos en vivo en iOS9
ipad lento que hacer (4)
No hay amor en iOS 9, pero las API para tomar y editar Live Photos están disponibles en iOS 10.
No puedo encontrar ninguna API para capturar fotos en vivo. ¿Me he perdido algo?
Fotos en vivo
Live Photos es una nueva característica de iOS 9 que permite a los usuarios capturar y revivir sus momentos favoritos con un contexto más rico que las fotos tradicionales. Cuando el usuario presiona el botón del obturador, la aplicación Cámara captura mucho más contenido junto con la foto normal, incluido el audio y los fotogramas adicionales antes y después de la foto. Al navegar por estas fotos, los usuarios pueden interactuar con ellas y reproducir todo el contenido capturado, haciendo que las fotos cobren vida.
iOS 9.1 introduce API que permiten que las aplicaciones incorporen la reproducción de Live Photos, así como exportar los datos para compartir. Hay un nuevo soporte en el marco de fotos para obtener un objeto PHLivePhoto del objeto PHImageManager, que se utiliza para representar todos los datos que comprenden una foto en vivo. Puede usar un objeto PHLivePhotoView (definido en el marco de PhotosUI) para mostrar el contenido de una foto en vivo. La vista PHLivePhotoView se encarga de mostrar la imagen, manejar toda la interacción del usuario y aplicar los tratamientos visuales para reproducir el contenido.
También puede usar PHAssetResource para acceder a los datos de un objeto PHLivePhoto con el fin de compartirlos. Puede solicitar un objeto PHLivePhoto para un activo en la biblioteca de fotos del usuario utilizando PHImageManager o UIImagePickerController. Si tiene una extensión para compartir, también puede obtener objetos PHLivePhoto utilizando NSItemProvider. En el lado receptor de un recurso compartido, puede volver a crear un objeto PHLivePhoto a partir del conjunto de archivos exportados originalmente por el remitente.
Durante la presentación, mencionaron que Facebook será compatible con Live Photos, por lo que sospecharía que tiene que haber una manera de capturar Live Photos.
No hay una API para la captura manual de fotos en vivo (es decir, nada análogo a las API de AVCapture que ofrecen control directo para capturar fotos o videos regulares).
UIImagePickerController
, que normalmente presenta una IU que le permite al usuario capturar una foto o video, también puede capturar Fotos en vivo en iOS 9.1 o posterior. Para permitir la captura de Live Photo, configure la propiedad mediaTypes
del controlador del selector de mediaTypes
para que incluya tanto kUTTypeImage
como kUTTypeLivePhoto
.
Según Apple Doc:
UIImagePickerControllerLivePhoto
La representación de Live Photo de la foto seleccionada o capturada.
Una foto en vivo es una imagen que incluye movimiento y sonido de los momentos antes y después de su captura. En dispositivos compatibles, la aplicación de la cámara captura todas las fotos como fotos en vivo de manera predeterminada, pero el parámetro imagePickerController: didFinishPickingImage: editingInfo: método de imagen solo contiene la representación de la imagen fija.
Para obtener el contenido de movimiento y sonido de una foto en vivo para su visualización (utilizando la clase PHLivePhotoView), incluya los identificadores kUTTypeImage y kUTTypeLivePhoto en los tipos de medios permitidos al configurar un controlador de selección de imágenes. Cuando el usuario selecciona o captura una foto en vivo, el diccionario de edición de información contiene la clave UIImagePickerControllerLivePhoto, con una representación PHLivePhoto de la foto como el valor correspondiente.
Disponible en iOS 9.1 y versiones posteriores.
// create an image picker controller instance
UIImagePickerController *picker = [[UIImagePickerController alloc]init];
picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
picker.allowsEditing = NO;
picker.delegate = self;
// make sure we include Live Photos (otherwise we''ll only get UIImages)
NSArray *mediaTypes = @[(NSString *)kUTTypeImage, (NSString *)kUTTypeLivePhoto];
picker.mediaTypes = mediaTypes;
// bring up the picker
[self presentViewController:picker animated:YES completion:nil];
Y entonces
# pragma mark - UIImagePickerController Delegate
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info{
// check if this is a Live Image, otherwise present a warning
PHLivePhoto *photo = [info objectForKey:UIImagePickerControllerLivePhoto];
if (!photo) {
[self notLivePhotoWarning];
return;
}
// create a Live Photo View
PHLivePhotoView *photoView = [[PHLivePhotoView alloc]initWithFrame:rect];
photoView.livePhoto = [info objectForKey:UIImagePickerControllerLivePhoto];
}
UIImagePickerController parece que permitirá la captura de fotos en vivo.
Trabajando con Live Photos
Live Photos es una función de aplicación de cámara en dispositivos compatibles, que permite que una imagen no sea solo un momento, sino que incluya movimiento y sonido de los momentos anteriores y posteriores a su captura. Un objeto PHLivePhoto representa una foto en vivo, y la clase PHLivePhotoView proporciona una interfaz de usuario interactiva y estándar del sistema para mostrar una foto en vivo y reproducir su contenido. Las fotos en vivo son todavía fotos. Cuando utiliza un controlador de selección de imágenes para capturar o elegir imágenes fijas (al incluir solo el tipo kUTTypeImage en la matriz mediaTypes), los activos que se capturaron como Fotos en vivo aún aparecen en el selector. Sin embargo, cuando el usuario elige un recurso, su objeto delegado recibe solo un objeto UIImage que contiene una representación de imagen fija de Live Photo. Para obtener el contenido completo de movimiento y sonido cuando el usuario captura o elige una foto en vivo con el selector de imágenes, debe incluir los tipos kUTTypeImage y kUTTypeLivePhoto en la matriz mediaTypes. Para obtener más información, consulte UIImagePickerControllerLivePhoto en la referencia del protocolo UIImagePickerControllerDelegate.