tab icon bar apple app 1024pt iphone objective-c cocoa-touch uiimage inversion-of-control

iphone - icon - Comprime UIImage a cierto tamaño en megabytes



splash screen ios (1)

Esta pregunta ya tiene una respuesta aquí:

En obj-с ¿cómo se obtiene el tamaño de un cierto UIImage almacenado en un NSMutableArray personalizado? Eso es lo primero que quiero hacer. Y el segundo es saber que la imagen es más grande en tamaño de archivo (digamos que 15 MB) que mi propio límite de tamaño de archivo (digamos 5 MB) cómo comprime la imagen para que esté más cerca del límite de tamaño de archivo, digamos 4.99 ¿MEGABYTE?


He visto esto en otra pregunta sobre stacj overflow link is - compresión de imagen por tamaño - iPhone SDK

pero combino dos respuestas de allí, también usé este código para hacer la compresión.

CGFloat compression = 0.9f; CGFloat maxCompression = 0.1f; int maxFileSize = 250*1024; NSData *imageData = UIImageJPEGRepresentation(yourImage, compression); while ([imageData length] > maxFileSize && compression > maxCompression) { compression -= 0.1; imageData = UIImageJPEGRepresentation(yourImage, compression); }

Una forma de hacerlo es volver a comprimir el archivo en un bucle, hasta que encuentre el tamaño deseado. Primero puede encontrar el alto y el ancho, y adivinar el factor de compresión (imagen más grande más compresión) luego de comprimirlo, verificar el tamaño y dividir la diferencia nuevamente.

Sé que esto no es muy eficiente, pero no creo que haya una sola llamada para lograr una imagen de un tamaño específico.