我的应用中A UIImage的大小是(320,460)
我使用
创建了另一个UIImage对象- (id)initWithCGImage:(CGImageRef)imageRef scale:(CGFloat)scale orientation:(UIImageOrientation)orientation
我为UIImageOrientationLeft指定了方向。
然后我打印了新的UIImage对象的大小,结果是(460,320)。
它已经旋转到左侧。
我需要将UIImage存储在我的文档目录中。
NSData *imageData = UIImagePNGRepresentation(rotateImageView);
NSString * path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
[imageData writeToFile:[path stringByAppendingPathComponent:@"test.png"] atomically:NO];
但是当我从“test.png”
获得UIImage对象时它的大小改为(320,460),它已经旋转到其原始状态。
我希望它可以存储在(460,320)
中我犯了一些错误吗?
谢谢!
答案 0 :(得分:1)
我也遇到过这个问题。在Apple代码中传递图像方向时,实际上不会旋转任何像素数据。相反,基本上存在与图像一起存储的枚举值。许多Apple的图像渲染器足够智能,可以读取此枚举值,并使用它来正确显示图像。所以您分享的代码片段只需更改此枚举值即可。尊重此值的渲染器将显示您想要的内容,而许多其他渲染器将忽略它。
有几种解决方案可供选择。
首先,如果您通过iOS显示图像,则可以使用UIImageView的transform属性和CGAffineTransformMakeRotation来获得所需的方向。
其次,您实际上可以旋转原始像素数据,这可以通过以下方式完成:
我会推荐第一个解决方案,因为它更容易编码,效率更高。但是,如果您要在iOS之外共享这些图像,第二种方法将提供更可靠的结果。