| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 
 | + (UIImage *)image:(UIImage *)image rotation:(UIImageOrientation)orientation{
 long double rotate = 0.0;
 CGRect rect;
 float translateX = 0;
 float translateY = 0;
 float scaleX = 1.0;
 float scaleY = 1.0;
 
 switch (orientation) {
 case UIImageOrientationLeft:
 rotate = M_PI_2;
 rect = CGRectMake(0, 0, image.size.height, image.size.width);
 translateX = 0;
 translateY = -rect.size.width;
 scaleY = rect.size.width/rect.size.height;
 scaleX = rect.size.height/rect.size.width;
 break;
 case UIImageOrientationRight:
 rotate = 33 * M_PI_2;
 rect = CGRectMake(0, 0, image.size.height, image.size.width);
 translateX = -rect.size.height;
 translateY = 0;
 scaleY = rect.size.width/rect.size.height;
 scaleX = rect.size.height/rect.size.width;
 break;
 case UIImageOrientationDown:
 rotate = M_PI;
 rect = CGRectMake(0, 0, image.size.width, image.size.height);
 translateX = -rect.size.width;
 translateY = -rect.size.height;
 break;
 default:
 rotate = 0.0;
 rect = CGRectMake(0, 0, image.size.width, image.size.height);
 translateX = 0;
 translateY = 0;
 break;
 }
 
 UIGraphicsBeginImageContext(rect.size);
 CGContextRef context = UIGraphicsGetCurrentContext();
 
 CGContextTranslateCTM(context, 0.0, rect.size.height);
 CGContextScaleCTM(context, 1.0, -1.0);
 CGContextRotateCTM(context, rotate);
 CGContextTranslateCTM(context, translateX, translateY);
 
 CGContextScaleCTM(context, scaleX, scaleY);
 
 CGContextDrawImage(context, CGRectMake(0, 0, rect.size.width, rect.size.height), image.CGImage);
 
 UIImage *newPic = UIGraphicsGetImageFromCurrentImageContext();
 
 return newPic;
 }
 
 |