Iphone 关于旋转图像的问题

Iphone 关于旋转图像的问题,iphone,objective-c,Iphone,Objective C,我的应用程序中UIImage的大小为(320460) 我使用创建了另一个UIImage对象 - (id)initWithCGImage:(CGImageRef)imageRef scale:(CGFloat)scale orientation:(UIImageOrientation)orientation 我将方向指定给UIImageOrientationLeft 然后我打印了新UIImage对象的大小,结果是(460320) 它已经向左旋转了 我需要将UIImage存储在我的文档目录中 NS

我的应用程序中UIImage的大小为(320460)

我使用创建了另一个UIImage对象

- (id)initWithCGImage:(CGImageRef)imageRef scale:(CGFloat)scale orientation:(UIImageOrientation)orientation
我将方向指定给UIImageOrientationLeft

然后我打印了新UIImage对象的大小,结果是(460320)

它已经向左旋转了

我需要将UIImage存储在我的文档目录中

NSData *imageData = UIImagePNGRepresentation(rotateImageView);
NSString * path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];

[imageData writeToFile:[path stringByAppendingPathComponent:@"test.png"] atomically:NO];      
但是当我从“test.png”中得到UIImage对象时

它的大小已更改为(320460),它已旋转到其原始状态

我希望它可以存储在(460320)

我犯了一些错误吗


谢谢

我也遇到了这个问题。在Apple代码中传递图像方向时,实际上不会旋转任何像素数据。相反,基本上存在与图像一起存储的枚举值。苹果的许多图像渲染器都足够聪明,可以读取此枚举值,并使用它正确显示图像。因此,您共享的代码片段只需更改此枚举值。尊重此值的渲染器将显示您想要的内容,而许多其他渲染器将忽略它

有两种解决方案可用

首先,如果要通过iOS显示图像,可以使用UIImageView的transform属性以及CGAffineTransformMakeRotation来获得所需的方向

其次,您可以实际旋转原始像素数据,这可以通过以下方式完成:


我推荐第一种解决方案,因为它更容易编码,也更高效。但是,如果您要在iOS之外共享这些图像,第二种方法将提供更可靠的结果。

我也遇到了这个问题。在Apple代码中传递图像方向时,实际上不会旋转任何像素数据。相反,基本上存在与图像一起存储的枚举值。苹果的许多图像渲染器都足够聪明,可以读取此枚举值,并使用它正确显示图像。因此,您共享的代码片段只需更改此枚举值。尊重此值的渲染器将显示您想要的内容,而许多其他渲染器将忽略它

有两种解决方案可用

首先,如果要通过iOS显示图像,可以使用UIImageView的transform属性以及CGAffineTransformMakeRotation来获得所需的方向

其次,您可以实际旋转原始像素数据,这可以通过以下方式完成:

我推荐第一种解决方案,因为它更容易编码,也更高效。但是,如果您要在iOS之外共享这些图像,第二种方法将提供更可靠的结果