我正在为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,但我不知道如何解决它。 我该怎么办?
答案 0 :(得分: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();