为什么当我使用CGImageCreateWithImageInRect时图像旋转?

时间:2011-05-27 05:01:51

标签: iphone ios4

这是我的代码:

CGRect rect = CGRectMake(size.width / 4, size.height / 4 , 
                         size.width / 2, size.width / 2); 

CGImageRef imageRef = CGImageCreateWithImageInRect([[picture objectForKey:UIImagePickerControllerOriginalImage] CGImage], rect);

UIImage *img = [UIImage imageWithCGImage:imageRef]; 

CGImageRelease(imageRef);

但图像会旋转。

我该如何解决?

2 个答案:

答案 0 :(得分:0)

返回原始图像UIImagePickerControllerOriginalImage。  简单的方法是使用UIImagePickerControllerEditedImage,但在您设置ImagePicker以允许编辑之前。

答案 1 :(得分:0)

原因: 每个UIImage都有一个方向,默认为UIImageOrientationUp。但是用相机拍摄的图像的方向([picture objectForKey:UIImagePickerControllerOriginalImage])并不总是UIImageOrientationUp。 所以,如果您只是使用[UIImage imageWithCGImage:]复制图像,您将丢失方向信息。 使用[UIImage imageWithCGImage:scale:orientation:]代替。

F.Y.I http://developer.apple.com/library/ios/#documentation/uikit/reference/UIImage_Class/Reference/Reference.html#Constants 在Constants Section中,Docset为每个UIImageOrientation提供了一个示例图像。