2012-04-01 15 views
8

Estoy mostrando una imagen en la celda de la vista de tabla (nombre de la imagen guardado en un plist). Antes de ponerlo a la célula, estoy redimensionar la imagen para
imageSize = CGSizeMake(32, 32);IOS: reduzca el tamaño de la imagen sin reducir la calidad de la imagen

Pero, después de cambiar el tamaño de la imagen, la calidad también se está degradado en pantalla de la retina.

enter image description here

que tienen tanto las imágenes incluidas en el proyecto (es decir, 1x y 2x @).

Así es como estoy reduciendo el tamaño de la imagen a 32x32.

+ (UIImage *)scale:(UIImage *)image toSize:(CGSize)size 
{ 
UIGraphicsBeginImageContext(size); 
[image drawInRect:CGRectMake(0, 0, size.width, size.height)]; 
UIImage *scaledImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 
return scaledImage; 
} 

Cualquier sugerencia sobre esto es muy apreciada.

Gracias

Respuesta

19

Prueba esto: en lugar de UIGraphicsBeginImageContext(size); uso UIGraphicsBeginImageContextWithOptions(size,NO,0.0);

por lo que entiendo lo que está haciendo no es cambiar el tamaño de la imagen a 32x32 (en puntos) sin importar la resolución. el UIGraphicsBeginImageContextWithOptions escala la imagen a la escala de la pantalla del dispositivo ... por lo que la imagen se redimensiona a 32x32 puntos, pero la resolución se mantiene para la pantalla retina

(tenga en cuenta que esto es lo que entendí de la referencia uikit de Apple ... puede no ser así ... pero debería) leer here

+0

Impresionante, esto funcionó como cualquier otra cosa. Muchas gracias. –

+0

¡Ojalá pudiera votar más esto, muchas gracias! – ryan0

+1

la calidad de imagen aún no es buena ... –

Cuestiones relacionadas