ios - ¿Qué debería ser compresiónQuality al utilizar UIImageJPEGRepresentation?
(2)
Me gustaría aplicar un filtro a una foto de la biblioteca del usuario y luego grabarlo en el disco. Estoy usando UIImageJPEGRepresentation
. Esta función toma un UIImage
y un valor de compressionQuality
entre 0.0 y 1.0. Porque quiero preservar la calidad original, la puse en 1.0. Pero descubrí que esto realmente crea un archivo de imagen que es más grande en tamaño de archivo que el original, incluso un poco más grande. Noté que en la aplicación Sample Photo Editing Extension de Apple, siempre establecían la calidad en 0.9. Intenté eso y genera un tamaño de archivo cercano al tamaño del archivo de foto original. Esto no tiene sentido para mí. ¿Alguien puede explicar esto? ¿Es apropiado usar siempre 0.9? ¿La cámara iOS lo comprime utilizando ese valor y, por lo tanto, la calidad original es 0.9? ¿O por qué no es 0.9 en realidad 1.0, si no hay nada que sea de mejor calidad?
NSData *renderedJPEGData = UIImageJPEGRepresentation(image, 0.9f);
Esta es una pregunta antigua y probablemente hayas resuelto esto por ti mismo, pero si alguien todavía está interesado, esto podría ayudarte.
(No soy un experto en JPEG)
UIImageJPEGRepresentation
no tiene en cuenta cómo se pudo haber comprimido la imagen en el pasado, solo está comprimiendo la imagen que tenía en ese momento.
Mencionas una foto que es "de la biblioteca del usuario". El usuario podría tener cualquier imagen en su biblioteca, comprimida en cualquier calidad de compressionQuality
.
Para tratar de mantener la imagen en el mismo tamaño de archivo, debe saber cómo se guardó originalmente, e incluso si usa la misma calidad de compressionQuality
, es probable que obtenga un tamaño de archivo diferente porque los datos que se están comprimiendo son diferentes .
En cuanto al uso de una compressionQuality
de 0.9 para guardar imágenes, depende de cuánto valora la calidad de su imagen en comparación con la cantidad de espacio que desea usar. El 0.7 parece ser sugerido a menudo como un buen equilibrio.
No estoy seguro de cuánto comprime la imagen de la cámara iOS (si es que la tiene) y no estoy seguro de que se garantice que tenga la mejor calidad posible. Si usa 0.9, siempre puede crear una aplicación que tome una foto y la comprima menos antes de guardarla.
Espero que eso ayude.
Puede convertir la imagen en representación PNG para obtener una calidad de imagen original.
UIImagePNGRepresentation(image)