iOS 对Image图片本身进行旋转0,90,180,270

来源:互联网 发布:淘宝网首页官网电脑版 编辑:程序博客网 时间:2024/06/02 04:53

from: http://blog.csdn.net/cjh965063777/article/details/49096383

对图片本身进行旋转

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