iOS PHImageManager

Proporciona métodos para obtener o generar miniaturas de vista previa e imágenes de tamaño completo o datos de video.

I. Resumen

Utilice estos métodos para obtener miniaturas o recursos de imágenes de tamaño completo, o para obtener AV Foundationobjetos para reproducir, generar y controlar recursos de video.

Cargar datos de imagen o video:

  1. Utilice la clase PHAsset para obtener los recursos que desea.
  2. Llame + (PHImageManager *)defaultManager;al método para obtener el objeto singleton de administración de imágenes.
  3. Utilice los métodos en "Solicitar imagen" y "Solicitar objeto de video" para cargar los datos de imagen o video del recurso.

El administrador de imágenes almacena en caché las imágenes y los datos que ha proporcionado, por lo que las solicitudes posteriores al mismo recurso con los mismos parámetros regresarán rápidamente.

Si necesita cargar datos de imagen de muchos recursos al mismo tiempo, si desea cargar imágenes muy rápidamente, utilice PHCachingImageManager para precargar el caché.
Por ejemplo, si desea completar una vista con miniaturas que muestran recursos, puede avanzar en el búfer antes de desplazarse a la posición.

2. Contenido

1. Obtenga un administrador de imágenes

+ (PHImageManager *)defaultManager;

Obtenga un administrador de imágenes único.

2. Solicitar imagen

- (PHImageRequestID)requestImageForAsset:(PHAsset *)asset targetSize:(CGSize)targetSize contentMode:(PHImageContentMode)contentMode options:(PHImageRequestOptions anulable *)options resultHandler:(void (^)(UIImage *__resultado anulable, NSDictionary *__información anulable)) controlador de resultados;

  • asset, PHAsset- El recurso a buscar.
  • targetSize, CGSize- El tamaño de la imagen que desea obtener.
  • contentMode, PHImageContentMode- El tamaño de la imagen en relación con la relación de aspecto.
  • options, PHImageRequestOptions : indica a Photos cómo procesar la solicitud, cómo formatear la imagen y notifica a tu aplicación sobre el progreso y los errores.
  • resultHandler, block- Se llama cuando se carga la imagen.
  • result, UIImage- la imagen obtenida
  • info, NSDictionary- Información sobre el estado de la solicitud. Consulte Claves de información de resultados de imagen para conocer los valores clave posibles.

Obtener una imagen para el recurso dado.

Cuando llamas a este método, Fotos cargará o generará una imagen que es del mismo tamaño o similar al que le das. Luego, llama a su resultHandlerdevolución de llamada para devolver la imagen. Para responder a su solicitud más rápidamente, Fotos puede proporcionar una imagen un poco más grande que el tamaño indicado, ya que esta imagen puede haberse almacenado en caché o puede generarse de manera más eficiente. Según lo que haya dado optionsy el estado actual del recurso, Fotos puede descargar datos para este recurso de la red.

Por defecto, este método se ejecuta de forma asíncrona. Si estás llamando a este método desde un subproceso en segundo plano, es posible que debas cambiar las propiedades optionsen los parámetros para bloquear el subproceso hasta que la imagen esté lista o se produzca un error, momento en el que Fotos te llamará .synchronousYESresultHandler

Para una solicitud asincrónica, Fotos puede devolver la resultHandlerllamada más de una vez. La primera vez que Fotos llame a la devolución de llamada, proporcionará una imagen adecuada de baja calidad para la visualización temporal y luego preparará una imagen de alta calidad. (Si la imagen de menor calidad está disponible de inmediato, se puede llamar a la devolución de llamada la primera vez antes de que el método devuelva un valor). Cuando la imagen de mayor calidad esté lista, Fotos volverá a llamar a la suya para proporcionar la imagen resultHandler. Las fotos solo llamarán tuyas una vez si el administrador de imágenes ha almacenado en caché la imagen de calidad completa para la imagen solicitada resultHandler. Cuando Fotos proporcione una imagen temporal de baja calidad, se marcará la clave resultHandleren infoel parámetro .PHImageResultIsDegradedKey

Puede usar este método para obtener recursos de fotos y videos: para un recurso de video, una solicitud de imagen proporcionará una miniatura o un fotograma clave.

PHImageContentMode

typedef NS_ENUM(NSInteger, PHImageContentMode) {
    
    
    PHImageContentModeAspectFit = 0, // 缩放图像,用更大的尺寸填充给定的目标尺寸。
    PHImageContentModeAspectFill = 1, // 缩放图像,使其完全填充给定的目标尺寸。
    PHImageContentModeDefault = PHImageContentModeAspectFit // 默认,PHImageContentModeAspectFit
} PHOTOS_ENUM_AVAILABLE_IOS_TVOS(8_0, 10_0);

- (PHImageRequestID)requestImageDataForAsset:(PHAsset *)opciones de activos:(PHImageRequestOptions anulable *)options resultHandler:(void(^)(NSData *__anulable imageData, NSString *__anulable dataUTI, UIImageOrientation orientación, NSDictionary *__anulable info))resultHandler

  • asset, PHAsset- El recurso a buscar.
  • options, PHImageRequestOptions : indica a Photos cómo procesar la solicitud, cómo formatear la imagen y notifica a tu aplicación sobre el progreso y los errores.
  • resultHandler, block- Se llama cuando se carga la imagen.
  • imageData, NSData- Los datos de imagen obtenidos.
  • dataUTI, NSString- La imagen solicitada.
  • orientation, UIImageOrientation- La orientación deseada de la imagen.
  • info, NSDictionary- Información sobre el estado de la solicitud. Consulte Claves de información de resultados de imagen para conocer los valores clave posibles.

Obtenga la imagen de tamaño completo para el recurso dado.

Cuando llama a este método, Fotos carga la representación más grande del recurso de imagen y luego llama a su resultHandlerdevolución de llamada para proporcionar estos datos. Según lo que haya dado optionsy el estado actual del recurso, Fotos puede descargar datos para este recurso de la red.

Por defecto, este método se ejecuta de forma asíncrona. Si estás llamando a este método desde un subproceso en segundo plano, es posible que debas cambiar las propiedades optionsen los parámetros para bloquear el subproceso hasta que la imagen esté lista o se produzca un error, momento en el que Fotos te llamará . Este método ignora las opciones: las fotos solo llamarán tuyas una vez .synchronousYESresultHandlerdeliveryModeresultHandler

Si versionla opción se establece en PHImageRequestOptionsVersionCurrent, Fotos proporcionará datos de imagen renderizados, incluidos los resultados de cualquier edición realizada en el contenido del recurso. De lo contrario, Fotos proporcionará la imagen más original del recurso.

3. Solicitar objeto de video

- (PHImageRequestID)requestPlayerItemForVideo:(PHAsset *)opciones de activos:(PHVideoRequestOptions anulables *)options resultHandler:(void (^)(AVPlayerItem *__anulable playerItem, NSDictionary *__información anulable))resultHandler;

  • asset, PHAsset- El recurso de video para jugar.
  • options, PHVideoRequestOptions- Le dice a Fotos cómo manejar la solicitud y notifica a su aplicación sobre el progreso y los errores.
  • resultHandler, block- Llamado después de que se hayan cargado los datos del recurso.
  • playerItem, AVPlayerItem- Los datos de vídeo recibidos.
  • info, NSDictionary- Información sobre el estado de la solicitud. Consulte Claves de información de resultados de imagen para conocer los valores clave posibles.

Obtiene la representación del recurso de vídeo a reproducir, que se cargará de forma asíncrona.

Cuando llame a este método, Fotos descargará los datos de video (si es necesario) y creará un elemento de reproducción. Luego llame a su resultHandlerdevolución de llamada para proporcionar el video solicitado.

Utilice este método cuando desee simplemente reproducir un recurso de video existente. Para obtener más detalles sobre las opciones o para trabajar con las pistas de audio y video del recurso, use - (PHImageRequestID)requestAVAssetForVideo:(PHAsset *)asset options:(PHVideoRequestOptions *)options resultHandler:(void (^)(AVAsset *asset, AVAudioMix *audioMix, NSDictionary *info))resultHandler;el método.

- (PHImageRequestID)requestExportSessionForVideo:(PHAsset *)opciones de activos:(PHVideoRequestOptions anulable *)options exportPreset:(NSString *)exportPreset resultHandler:(void (^)(AVAssetExportSession *__exportSession anulable, NSDictionary *__información anulable))resultHandler;

  • asset, PHAsset- El recurso de video para el que se creará la sesión de exportación.
  • options, PHVideoRequestOptions- Le dice a Fotos cómo manejar la solicitud y notifica a su aplicación sobre el progreso y los errores.
  • exportPreset, NSString- El nombre preestablecido de exportación del activo a exportar. Por favor, compruébelo AVAssetExportSession.
  • resultHandler, block- Llamado después de que se hayan cargado los datos de recursos y la sesión esté lista para ser exportada.
  • exportSession, AVAssetExportSession- use esto para escribir datos de recursos de video en un archivo
  • info, NSDictionary- Información sobre el estado de la solicitud. Consulte Claves de información de resultados de imagen para conocer los valores clave posibles.

Obtiene una sesión de exportación que escribe los datos del recurso de video en un archivo, que se cargará de forma asíncrona.

Cuando llame a este método, Fotos descargará los datos de video (si es necesario) y creará una sesión de exportación. Luego llame a su resultHandlerdevolución de llamada para proporcionar el video solicitado.

Para obtener opciones de exportación adicionales, use - (PHImageRequestID)requestAVAssetForVideo:(PHAsset *)asset options:(PHVideoRequestOptions *)options resultHandler:(void (^)(AVAsset *asset, AVAudioMix *audioMix, NSDictionary *info))resultHandler;métodos y cree objetos AVAssetReader y AVAssetWriter para convertir y generar datos de activos de video.

- (PHImageRequestID)requestAVAssetForVideo:(PHAsset *)opciones de activos:(PHVideoRequestOptions anulable *)options resultHandler:(void (^)(AVAsset *__recurso anulable, AVAudioMix *__audioMix anulable, NSDictionary *__información anulable))resultHandler;

  • asset, PHAsset- El recurso de video que se va a cargar.
  • options, PHVideoRequestOptions- Le dice a Fotos cómo manejar la solicitud y notifica a su aplicación sobre el progreso y los errores.
  • resultHandler, block- Llamado después de que se hayan cargado los datos del recurso.
  • asset, AVAsset- Objetos que brindan acceso a pistas y datos de recursos de video. Consulte la Guía de programación de AVFoundation para obtener más detalles sobre los objetos AVAsset .
  • audioMix, AVAudioMix- Use este objeto para reorganizar las pistas de audio del activo, editar audio adicional en la composición o configurar el objeto AVAssetReaderOutput que se usa para generar los datos de audio del activo. Si este parámetro es nil, entonces el recurso está usando la composición de audio predeterminada.
  • info, NSDictionary- Información sobre el estado de la solicitud. Consulte Claves de información de resultados de imagen para conocer los valores clave posibles.

El objeto que representa el contenido y el estado del recurso de video AV Foundationse cargará de forma asíncrona.

Cuando llame a este método, Fotos descargará los datos de video (si es necesario) y creará un AV Foundationobjeto. Luego llame a su resultHandlerdevolución de llamada para proporcionar el video solicitado.

Utilice este método cuando desee trabajar con las pistas de audio y video de un contenido de recursos. Si solo desea reproducir el recurso, utilice - (PHImageRequestID)requestPlayerItemForVideo:(PHAsset *)asset options:(PHVideoRequestOptions *)options resultHandler:(void (^)(AVPlayerItem *playerItem, NSDictionary *info))resultHandler;el método. Si desea exportar datos de recursos, llame - (PHImageRequestID)requestExportSessionForVideo:(PHAsset *)asset options:(PHVideoRequestOptions *)options exportPreset:(NSString *)exportPreset resultHandler:(void (^)(AVAssetExportSession *exportSession, NSDictionary *info))resultHandler;al método.

4. Solicitar fotos en vivo

- (PHImageRequestID)requestLivePhotoForAsset:(PHAsset *)asset targetSize:(CGSize)targetSize contentMode:(PHImageContentMode)contentMode options:(PHLivePhotoRequestOptions anulable *)options resultHandler:(void (^)(PHLivePhoto *__anulable livePhoto, NSDictionary *__anulable info)) controlador de resultados;

Obtenga fotos en vivo del recurso dado.

Una Live Photo es una imagen, solo disponible en dispositivos compatibles, que incluye movimiento y sonido antes y después de la captura. Al igual que un UIImageobjeto representa una imagen lista para usar, un PHLivePhotoobjeto representa una foto en vivo de datos de imagen, sonido y movimiento listos para mostrarse. Use este método para obtener Live Photo en el recurso. Después de obtenerlo, Photos llamará a su resultHandlerdevolución de llamada para devolver Live Photo, que puede usar PHLivePhotoViewpara mostrar Live Photo.

Nota
Utilice este método cuando desee mostrar el contenido de movimiento y sonido de Live Photo. Si solo desea mostrar una imagen fija de un activo de Live Photo, por ejemplo, al cargar una imagen en miniatura para mostrarla en la pantalla de selección de fotos, use el - (PHImageRequestID)requestImageForAsset:(PHAsset *)asset targetSize:(CGSize)targetSize contentMode:(PHImageContentMode)contentMode options:(PHImageRequestOptions *)options resultHandler:(void (^)(UIImage *result, NSDictionary *info))resultHandler;método.

Cuando llame a este método, Fotos cargará o generará un objeto PHLivePhoto con un tamaño similar o igual al tamaño que proporcione. Luego llame a su resultHandlerdevolución de llamada para proporcionar esta imagen. Para responder a su solicitud más rápidamente, Fotos puede proporcionar una imagen un poco más grande que el tamaño indicado, ya que esta imagen puede haberse almacenado en caché o puede generarse de manera más eficiente. Según lo que haya dado optionsy el estado actual del recurso, Fotos puede descargar datos para este recurso de la red. Este método siempre se ejecuta de forma asíncrona.

Las fotos pueden llamar a su devolución de llamada resultHandler más de una vez. La primera vez que Fotos llame a la devolución de llamada, proporcionará una imagen adecuada de baja calidad para la visualización temporal y luego preparará una imagen de alta calidad. (Si la imagen de baja calidad está disponible inmediatamente, se puede llamar a la devolución de llamada la primera vez antes de que el método devuelva un valor). Cuando la imagen de alta calidad esté lista, Fotos volverá a llamar a su manejador de resultados para proporcionar la imagen. Las fotos solo llamarán tuyas una vez si el administrador de imágenes ha almacenado en caché la imagen de calidad completa para la imagen solicitada resultHandler. resultHandlerLas claves en infolos parámetros PHImageResultIsDegradedKeyse marcan cuando Fotos proporciona una imagen temporal de baja calidad .

5. Cancelar una solicitud

- (vacío)cancelImageRequest:(PHImageRequestID)requestID;

Cancelar una solicitud asíncrona.

Cuando usa - (PHImageRequestID)requestImageForAsset:(PHAsset *)asset targetSize:(CGSize)targetSize contentMode:(PHImageContentMode)contentMode options:(PHImageRequestOptions *)options resultHandler:(void (^)(UIImage *result, NSDictionary *info))resultHandler;el método para realizar una solicitud asíncrona para solicitar datos de imagen, o usa el método anterior de "solicitar objeto de video" en un objeto de video, el administrador de imágenes devolverá un identificador digital correspondiente a la solicitud. Para cancelar la solicitud antes de que se complete, llame a este método y pase el ID numérico correspondiente.

Supongo que te gusta

Origin blog.csdn.net/chennai1101/article/details/129983694
Recomendado
Clasificación