2016-08-02 2 views
-1

J'essaie de changer la couleur d'une zone de mon UIImage avec CGContext puis de créer une nouvelle image à partir de l'état actuel. L'image originale a l'orientation correcte, mais après cela, l'image tourne sur les côtés.Pourquoi CGContextDrawImage fait-il pivoter mon image

CGRect imageRect = CGRectMake(0, 0, originalImage.size.width, originalImage.size.height); 

UIGraphicsBeginImageContextWithOptions(originalImage.size, false, originalImage.scale); 
CGContextRef context = UIGraphicsGetCurrentContext(); 

CGContextSaveGState(context); 
CGContextDrawImage(context, imageRect, originalImage.CGImage); 
CGContextSetRGBFillColor(context, 255.0f, 255.0f, 255.0f, 1.0f); 
CGContextFillRect(context, CGRectMake(5,5,100,100)); 
CGContextRotateCTM (context, radians(270)); 
CGContextRestoreGState(context); 
UIImage *img = UIGraphicsGetImageFromCurrentImageContext(); 

Répondre

0

C'est une question très facile.

Parce que le système iOS dispose de 3 systèmes de coordonnées différents.

UIKit - direction de l'axe y est en panne Graphics Core (quartz) - direction d'axe Y est en place OpenGL ES - direction d'axe Y est en place

Le originalImage est crée par UIKit et l'image cible est crée par Core Graphiques, donc ça devrait être à l'envers.

Si vous voulez obtenir l'image correcte, vous pouvez utiliser:

UIImageView* imageV = [[UIImageView alloc] initWithFrame:CGRectMake(100,100, 100, 100)]; 
imageV.layer.borderColor = [UIColor redColor].CGColor; 
imageV.layer.borderWidth = 1; 
imageV.image = img; 
imageV.layer.transform = CATransform3DRotate(imageV.layer.transform, M_PI, 1.0f, 0.0f, 0.0f); 
[self.view addSubview:imageV]; 

L'espoir peut vous aider.