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

来源:互联网 发布:bcm4306 linux 编辑:程序博客网 时间:2024/06/05 22:33

对图片本身进行旋转

+ (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 = 3 * 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();    //做CTM变换    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;}


0 0
原创粉丝点击