旋转 UIImage 产生翻转图像
Rotate UIImage produces a flipped image
我只是尝试使用以下代码围绕其中心旋转 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;
}
这是我得到的结果示例:
Input image:
Result Image for angle = 0 radians :
结果图像翻转了,但我不确定为什么?知道我做错了什么吗?
提前致谢。
对于你想要的东西来说似乎有点矫枉过正。您是否尝试过查看 CGAffineTransform 旋转:
CGAffineTransformRotate(rotation.view.transform, angle);
在CGContextRotateCTM
之后添加这一行
CGContextScaleCTM(ctx, 1.0, -1.0);
UIKit 坐标系与Quartz 坐标系颠倒了。详情请看这里
https://developer.apple.com/library/ios/qa/qa1708/_index.html
还要检查图像方向。
我只是尝试使用以下代码围绕其中心旋转 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;
}
这是我得到的结果示例:
Input image:
Result Image for angle = 0 radians :
结果图像翻转了,但我不确定为什么?知道我做错了什么吗?
提前致谢。
对于你想要的东西来说似乎有点矫枉过正。您是否尝试过查看 CGAffineTransform 旋转:
CGAffineTransformRotate(rotation.view.transform, angle);
在CGContextRotateCTM
CGContextScaleCTM(ctx, 1.0, -1.0);
UIKit 坐标系与Quartz 坐标系颠倒了。详情请看这里
https://developer.apple.com/library/ios/qa/qa1708/_index.html
还要检查图像方向。