2012-11-13 4 views
0

rotateJ'essaie de faire pivoter mes images de 90 degrés. Cela fonctionne sans la rotation, mais quand je tourne et traduit il ne montre pas. Qu'est-ce que je fais mal?L'image ne tourne pas correctement

  NSString *filePath = [[NSBundle mainBundle] pathForResource:@"check" ofType:@"jpg"]; 
UIImage *newImage = [[UIImage alloc] initWithContentsOfFile:filePath]; 

UIGraphicsBeginImageContext(newImage.size); 
//CGContextRef c = UIGraphicsGetCurrentContext(); 

CGContextTranslateCTM(UIGraphicsGetCurrentContext(), newImage.size.width, 0); 
//CGContextTranslateCTM(UIGraphicsGetCurrentContext(), 0, newImage.size.width); 
//CGContextScaleCTM(UIGraphicsGetCurrentContext(), 1.0, -1.0); 
CGContextRotateCTM(UIGraphicsGetCurrentContext(), 90); 
CGRect imageRect = CGRectMake(0, 0, newImage.size.height, newImage.size.width); 
CGContextDrawImage(UIGraphicsGetCurrentContext(), imageRect, newImage.CGImage); 
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext(); 

ImageView.image = viewImage; 
+0

vérifier cette autre question http://stackoverflow.com/questions./10307521/ios-png-image-pivoté-90 degrés – tkanzakic

+0

CGContextRotateCTM utilise l'angle en radians .. donc M_PI_2 pour 90 degrés –

Répondre

0

Le problème était ma define et je devais retourner l'image. Voici le code complet: (L'image doit être parfaite, car un OCR traitement de l'image et si elle est même un peu au large, il obtient rejeté

CGContextRef c = UIGraphicsGetCurrentContext(); 
CGContextSaveGState(c); 

NSString *filePath = [[NSBundle mainBundle] pathForResource:@"check" ofType:@"jpg"]; 
UIImage *newImage = [[UIImage alloc] initWithContentsOfFile:filePath]; 

NSLog(@"Rect width: %@", NSStringFromCGSize(newImage.size)); 
UIGraphicsBeginImageContext(newImage.size); 
CGContextTranslateCTM(UIGraphicsGetCurrentContext(), 0, newImage.size.width); 
CGContextScaleCTM(UIGraphicsGetCurrentContext(), 1.0, -1.0); 

CGContextTranslateCTM(UIGraphicsGetCurrentContext(), 0.5f * newImage.size.width, 0.5f * newImage.size.height) ; 
CGContextRotateCTM(UIGraphicsGetCurrentContext(), radians(-90)) ; 
    CGRect imageRect = CGRectMake(-(newImage.size.height* 0.5f) + 200, -(0.5f * newImage.size.width) + 200 , newImage.size.height - 200, newImage.size.width - 200); 
CGContextDrawImage(UIGraphicsGetCurrentContext(), imageRect, newImage.CGImage); 

UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext(); 
ImageView.image = viewImage; 

CGContextRestoreGState(c); 
2

Je suggère d'utiliser l'image vue et de l'utiliser Transformons comme ceci:

UIImage *newImage = [[UIImage alloc] initWithContentsOfFile:filePath]; 
UIImageView *newImageView = [[UIImageView alloc] initWithImage:newImage]; 
newImageView.transform = CGAffineTransformMakeRotation(M_PI_2); 
+0

Je ne peux pas utiliser une vue d'image car cette image doit être envoyée à un serveur pour l'autorisation d'image –

+0

Vous pouvez toujours accéder directement à l'image à partir de l'image en utilisant 'newImageView.image' –

0

Vous devriez faire:

UIGraphicsBeginImageContext(newImage.size); 

CGContextRef context = UIGraphicsGetCurrentContext(); 
CGContextRotateCTM (context, 90* M_PI/180); //Degrees should be in radians. 

[newImage drawAtPoint:CGPointMake(0, 0)]; 

UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext(); 

Bonne chance.

MISE À JOUR:

En fait, c'est un double de How to Rotate a UIImage 90 degrees?