4

我正在为 iPad 开发 iOS 6 应用程序。我开发了一些代码来旋转UIImage. 它适用于正方形图像,但是当图像不是正方形时,它们会被裁剪,因此您只能看到图像的一部分(正方形)。

我的代码:

UIGraphicsBeginImageContext(image.size);

CGContextRef context = UIGraphicsGetCurrentContext();

CGContextTranslateCTM( context, 0.5f * image.size.width, 0.5f * image.size.height ) ;
CGContextRotateCTM( context, -1.5707963267949) ;

[image drawInRect:(CGRect){ { -imatgetemporal.size.width * 0.5f, -image.size.height * 0.5f }, image.size }];

UIImage *imageCopy = UIGraphicsGetImageFromCurrentImageContext();

我认为问题出在0.5f,但我不知道如何解决。我能做些什么?

4

1 回答 1

1

您需要使您的图形上下文足够大以容纳旋转的图像。您正在使用 image.size,但应该使用旋转后的大小作为 UIGraphicsBeginImageContext 的参数。此外,您对 drawInRect 的论点不正确。您需要通过以下方式偏移(旋转的)原点 x,它确定最终图像的 y 原点:“向上”为原始高度的一半(这使最终图像完全脱离绘图上下文的顶部)然后“向下”整个原始宽度,即最终图像高度。

const CGSize imageSize = image.size;
UIGraphicsBeginImageContext(CGSizeMake(imageSize.height, imageSize.width));

CGContextRef context = UIGraphicsGetCurrentContext();
CGContextTranslateCTM(context, 0.5f * imageSize.width, 0.5f * imageSize.height ) ;
CGContextRotateCTM(context, -1.5707963267949) ;
[image drawInRect:(CGRect){ { imageSize.height * 0.5 - imageSize.width, -imageSize.width * 0.5f }, imageSize }];

UIImage *imageCopy = UIGraphicsGetImageFromCurrentImageContext();
于 2013-03-15T06:30:25.883 回答