2010-09-07 28 views
1

Je tente de prendre une image capturée à partir de la caméra arrière, d'y appliquer une transformation de mise à l'échelle, puis de sortir une nouvelle image avec la même taille de l'original mais agrandie.Quel est le moyen le plus rapide de générer un nouveau UIImage à partir de transformations appliquées à un UIImage existant?

Ce que je travaille ci-dessous ... MAIS il est lent (en particulier le code entre la UIGraphicsBeginImageContext (taille) et UIGraphicsEndImageContext();)

Y at-il une meilleure façon de le faire ? En particulier, une manière qui produira le même résultat mais plus vite?

UIImage *tempImage = [[UIImage alloc] initWithData:imageData]; 

CGImageRef img = [tempImage CGImage]; 
CGFloat width = CGImageGetWidth(img); 
CGFloat height = CGImageGetHeight(img); 
CGRect bounds = CGRectMake(0, 0, width, height); 
CGSize size = bounds.size; 

CGFloat z = 5.0; 
CGAffineTransform xfrm = CGAffineTransformMakeScale(z, z); 

UIGraphicsBeginImageContext(size); 
CGContextRef currentContext = UIGraphicsGetCurrentContext(); 
CGContextConcatCTM(currentContext, xfrm); 
CGContextDrawImage(currentContext, bounds, img); 

UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); 

UIGraphicsEndImageContext(); 

Merci - wg

Répondre

0

La réponse est simple: Culture et échelle

La taille d'un UIImage peut être considérable, en particulier lorsqu'il a été capturé par la caméra en qualité « photo » entraînant de mauvaises performances lors de la mise à l'échelle. La meilleure pratique consiste donc à recadrer d'abord la photo à la taille requise, puis à l'adapter au besoin.