旋转UIImage会生成翻转图像

时间:2015-01-12 09:59:09

标签: ios uiimage rotatetransform

我只是尝试使用以下代码在其中心周围旋转UIImage:

- (UIImage *) rotateImage: (UIImage *)image angle:(CGFloat)angleInRadian
    {
        float newSide = MAX([image size].width, [image size].height);
        CGSize size =  CGSizeMake(newSide, newSide);
        UIGraphicsBeginImageContext(size);
        CGContextRef ctx = UIGraphicsGetCurrentContext();
        CGContextTranslateCTM(ctx, newSide/2, newSide/2);
        CGContextRotateCTM(ctx, angleInRadian);
        CGContextDrawImage(UIGraphicsGetCurrentContext(),CGRectMake(-[image size].width/2,-[image size].height/2,size.width, size.height),image.CGImage);
        //CGContextTranslateCTM(ctx, [image size].width/2, [image size].height/2);

        UIImage *i = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();
        return i;
    }

以下是我得到的结果示例:

  

输入图片:

enter image description here

  

结果图像的角度= 0弧度:

enter image description here

结果图片被翻转,但我不确定为什么?关于我做错了什么的任何想法?

提前致谢。

2 个答案:

答案 0 :(得分:0)

对于你想要的东西似乎有点矫枉过正。您是否尝试过查看CGAffineTransformRotate:

 CGAffineTransformRotate(rotation.view.transform, angle);

答案 1 :(得分:0)

CGContextRotateCTM

之后添加此行
CGContextScaleCTM(ctx, 1.0, -1.0);

UIKit坐标系是倒置到Quartz坐标系。有关详细信息,请参阅此处

https://developer.apple.com/library/ios/qa/qa1708/_index.html

同时检查图像方向。