2012-04-01 16 views
8

Wyświetlam obraz w komórce widoku tabeli (nazwa obrazu zapisana w pliku plist). Przed ustawieniem go do celi, mam rozmiaru obrazu do
imageSize = CGSizeMake(32, 32);IOS: Zmniejszenie rozmiaru obrazu bez obniżania jakości obrazu

Ale po zmianie rozmiaru obrazu, jakość jest coraz rozkładowi w wyświetlacz Retina.

enter image description here

mam zarówno obrazy dodane do projektu (np 1X @ 2x).

W ten sposób zmniejszam rozmiar obrazu do 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; 
} 

Wszelkie wskazówki na ten temat są bardzo doceniane.

Dzięki

Odpowiedz

19

spróbuj tego: zamiast UIGraphicsBeginImageContext(size); użytku UIGraphicsBeginImageContextWithOptions(size,NO,0.0);

z tego co rozumiem, co robisz nie jest zmiana rozmiaru obrazu do 32x32 (w punktach) bez względu na rozdzielczość. UIGraphicsBeginImageContextWithOptions skaluje obraz do skali ekranu urządzenia ... w związku z tym obraz jest przeskalowany do 32x32 punktów, ale rozdzielczość jest zachowywana dla wyświetlacza Retina

(zauważ, że to jest to, co rozumiem z opisu Uikit firmy apple..it może nie być tak .. ale powinno) przeczytać here

+0

Awesome, to działało jak wszystko. Dziękuję Ci bardzo. –

+0

Chciałbym móc to powtórzyć, dziękuję bardzo! – ryan0

+1

Jakość obrazu nadal nie jest dobra .... –