¿Cómo transmitir pequeños UIImages a través de la networking con una pérdida mínima de calidad?

Necesito enviar un UIImage a través de Internet, pero he tenido algunos problemas hasta el momento.

Actualmente tomo el UIImage, hago las dimensiones 16, lo convierto a NSData y luego creo un NSString usando NSData + base64. Luego transmito esto como parte de una request JSON a un server.

La mayoría de las veces, esto funciona perfectamente.

Sin embargo, los tamaños de los files son grandes. En una connection celular, una image puede demorar ~ 10 segundos en cargarse.

¿Cómo transmito un UIImage, a través de la networking, para que sea pequeño y conserva la calidad? Incluso cuando lo hago un 16 del número anterior de píxeles, una fotografía puede ser de 1,5 MB. Me gustaría get alnetworkingedor de 300 KB.

Comprimirlo con zip o gzip solo parece resultar en ahorros insignificantes (<.1MB).

Gracias robert

Sugeriría almacenarlo como un JPEG o un PNG con algo de compression, utilice un método como

UIImageJPEGRepresentation(UIImage *image, CGFloat compressionQuality) 

Luego publica el object NSData que obtienes de eso. Debería poder encontrar una buena solución de calidad / calidad jugando con la variable compressionQuality.

No dijiste cómo estás convirtiendo tus imágenes a datos. Mencionas "fotografía". Si sus imágenes son fotografías, debe usar UIImageJPEGRepresentation , no UIImagePNGRepresentation . Tendrá que jugar con el parámetro compressionQuality para encontrar un nivel de compression que equilibre el tamaño de los datos y la calidad de la image.