2013-02-06 15 views
16

sto cercando di cancellare l'immagine utilizzando seguente codicedrawInRect: perdere la qualità della risoluzione dell'immagine

CGColorRef strokeColor = [UIColor whiteColor].CGColor; 

UIGraphicsBeginImageContext(imgForeground.frame.size); 

CGContextRef context = UIGraphicsGetCurrentContext(); 
[imgForeground.image drawInRect:CGRectMake(0, 0, imgForeground.frame.size.width, imgForeground.frame.size.height)]; 

CGContextSetLineCap(context, kCGLineCapRound); 
CGContextSetLineWidth(context, 10); 

CGContextSetStrokeColorWithColor(context, strokeColor); 
CGContextSetBlendMode(context, kCGBlendModeClear); 

CGContextBeginPath(context); 
CGContextMoveToPoint(context, lastPoint.x, lastPoint.y); 
CGContextAddLineToPoint(context, currentPoint.x, currentPoint.y); 
CGContextStrokePath(context); 

imgForeground.image = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

Ma ho appena scoprire Immagine perdere la sua risoluzione a causa di drawInRect.

BeforeAfter

+0

Caricamento del "prima" e "dopo" le immagini screenshot sarebbe di grande aiuto per una questione che coinvolge grafica. – dasblinkenlight

+0

Immagine caricata Si prega di fare riferimento a –

+0

Non è chiaro cosa intendi per "perdita di qualità della risoluzione dell'immagine". Forse potresti provare ad essere un po 'più specifico. – ipmcc

risposta

38

Si dovrebbe andare con UIGraphicsBeginImageContextWithOptions invece di UIGraphicsBeginImageContext, in modo che un fattore di scala può essere specificata.

Per esempio, questo utilizzerà il fattore di scala della schermata principale del dispositivo:

UIGraphicsBeginImageContextWithOptions(imgForeground.frame.size, NO, 0); 
+0

Cosa succede se l'immagine non ha le dimensioni di Window? Cosa sostituire con imgForeground.window.screen.scale –

+0

Ciao! Bene, il 3 ° parametro è la scala e non alcuna dimensione (cioè la dimensione)! Per tutti gli iPhone, iPodTouches ecc. Che NON hanno display Retina, restituiranno un valore 1.0f, mentre i dispositivi Retina Display forniranno 2.0f. –

+1

sostituisci 'imgForeground.window.screen.scale' con '[[UIScreen mainScreen] scale]', quindi diventa più chiaro che la scala dello "schermo" è destinata! –

Problemi correlati