2012-04-01 18 views
8

Sto visualizzando un'immagine nella cella tableview (nome dell'immagine salvato in un plist). Prima di impostare al cellulare, sto ridimensionare l'immagine per
imageSize = CGSizeMake(32, 32);IOS: Ridurre le dimensioni dell'immagine senza ridurre la qualità dell'immagine

Ma, dopo il ridimensionamento dell'immagine, la qualità è sempre degradato nel display retina.

enter image description here

Ho sia le immagini aggiunti al progetto (vale a dire 1x e 2x @).

Ecco come ridurre le dimensioni dell'immagine 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; 
} 

Qualsiasi suggerimento su questo è molto apprezzato.

Grazie

risposta

19

provare questo: invece di UIGraphicsBeginImageContext(size); uso UIGraphicsBeginImageContextWithOptions(size,NO,0.0);

da quello che ho capito quello che stai facendo non v'è ridimensionare l'immagine a 32x32 (in punti) non importa quale sia la risoluzione. lo UIGraphicsBeginImageContextWithOptions ridimensiona l'immagine alla scala dello schermo del dispositivo ... quindi l'immagine viene ridimensionata a 32x32 punti ma la risoluzione viene mantenuta per il display retina

(notare che questo è quello che ho capito dal riferimento uikit di apple..it potrebbe non essere così..ma dovrebbe) leggi here

+0

Impressionante, questo ha funzionato come niente. Grazie mille. –

+0

Vorrei poterlo sospendere di più, grazie mille! La qualità dell'immagine – ryan0

+1

non è ancora buona .... –

Problemi correlati