2010-06-29 13 views
6

Tengo un código de generación de imágenes que usa UIGraphicsBeginImageContext(), UIGraphicsGetImageFromCurrentImageContext() y UIImagePNGRepresentation() para hacer un dibujo, y luego guardarlo en el disco como PNG para su uso posterior .UIImagePNGRpresentación() y escala (pantalla de iPhone 4)

¿UIImagePNGRepresentation() tiene en cuenta la escala? Como en, si tengo una imagen de 20 puntos de ancho, ¿el PNG resultante será de 20 o 40 píxeles?

Además, cuando muestro estas imágenes, utilizo [UIImage imageWithContentsOfFile:] y [image drawInRect:]. ¿Hay alguna manera de insinuar esos métodos para usar dibujos de mayor resolución?

Respuesta

6

por la iPhone Application Programming Guide se debe utilizar UIGraphicsBeginImageContextWithOptions con una escala de 2.0 para crear un contexto escala apropiada para el iPhone 4.

En cuanto a la segunda parte de su pregunta, creo que debe guardar el resultado con el png @ 2x sufijo en el nombre base (p. Ej., [email protected]). Luego, cuando lo vuelva a cargar usando UIImage, su tamaño y escala se establecerán correctamente. De lo contrario, su imagen se cargará en la escala 1.0 y será dos veces más grande (en puntos) de lo que esperaba. This section del mismo documento entra en un poco de detalle con respecto a las imágenes de alta resolución para dispositivos con pantallas de alta resolución.

+0

Si creé el contexto con la escala 2.0 (digamos que tiene 20 puntos de ancho), cuando llame a UIImagePNGRepresentation(), ¿el PNG resultante tendrá 40 píxeles de ancho? –

+0

Según mi comprensión de los documentos, sí. Aunque admito que no lo he probado yo mismo. Por lo tanto, crea un contexto de 20x20 pt con factor de escala 2.0. Obtienes una imagen de 40x40 píxeles. Guarde eso como [email protected] Luego, cuando lo cargue con UIImage, volverá a ser 20x20 pt con una escala de 2.0. Si, en cambio, lo guarda como solo image.png y lo carga, obtendrá una imagen de 40x40 pt con escala 1.0. –

+0

Gracias por su ayuda. Lo tengo funcionando :) –

Cuestiones relacionadas