UIImage a NSData en bruto / evitar la compresión

Tengo mi propia clase de descargador de imágenes, mantiene una cola y descarga imágenes una (o una cierta cantidad) a la vez, las escribe en la carpeta de caché y las recupera de la carpeta de caché cuando es necesario. También tengo una subclase UIImageView a la que puedo pasar una URL, a través de la clase de descargador de imágenes que se verá si la imagen ya existe en el dispositivo y la mostrará si la tiene, o la descarga y la muestra después de que finalice.

Después de que una imagen termina de descargar hago lo siguiente. Creo un UIImage desde el NSData descargado, guardo el NSData descargado en el disco y devuelvo el UIImage.

// This is executed in a background thread
downloadedImage = [UIImage imageWithData:downloadedData];
BOOL saved = [fileManager createFileAtPath:filePath contents:downloadedData attributes:attributes];
// Send downloadedImage to the main thread and do something with it

Para recuperar una imagen existente hago esto.

// This is executed in a background thread
if ([fileManager fileExistsAtPath:filePath])
{
    NSData* imageData = [fileManager contentsAtPath:filePath];
    retrievedImage = [UIImage imageWithData:imageData];
    // Send retrievedImage to the main thread and do something with it
}

Como puede ver, siempre creo un UIImage directamente desde los NSData descargados, nunca creo los NSData utilizando UIImagePNGRepresentation, por lo que la imagen nunca se comprime. Cuando creas un UIImage a partir de NSData comprimidos, UIImage lo descomprimirá justo antes de renderizar en el hilo principal y, por lo tanto, bloqueará la interfaz de usuario. Ya que ahora tengo un UITableView con una tonelada de imágenes pequeñas que se deben descargar o recuperar del disco, esto sería inaceptable ya que ralentizaría enormemente mi desplazamiento.

Ahora mi problema. El usuario también puede seleccionar una foto del rollo de la cámara, guardarla y también tiene que aparecer en mi UITableView. Pero parece que no puedo encontrar una manera de convertir el UIImage del rollo de la cámara en NSData sin usar UIImagePNRepresentación. Así que aquí está mi pregunta.

¿Cómo puedo convertir un UIImage en NSData sin comprimir para poder volver a convertirlo en un UIImage más tarde usando imageWithData para que no tenga que descomprimirlo antes de procesarlo?

o

¿Hay alguna forma en que pueda hacer la descompresión antes de enviar el UIImage al hilo principal y almacenarlo en caché para que solo se descomprima una vez?

Gracias por adelantado.

Respuestas a la pregunta(3)

Su respuesta a la pregunta