UIImageView旋转我的UIImage

时间:2011-09-21 13:38:30

标签: iphone uiimageview

我正在尝试在纵向模式下显示通过相机拍摄的图像,但我总是在Landascape模式下显示在我的UIImageView上。图像在被添加到UIImageView之前被缩放,但似乎这不是问题,因为我尝试了在网络上找到的许多不同的解决方案(甚至一些非常聪明的解决方案,如来自Trevor's Bike Shed)。

这是我的代码:

UIImage *image = [UIImage imageWithContentsOfFile:imgPath];
CGRect newFrame = [scrollView frame];
UIImage *resizedImage = [ImageViewController imageFromImage:image scaledToSize:newFrame.size];
imageView = [[UIImageView alloc] initWithFrame:newFrame];
[imageView setImage:resizedImage];  
[scrollView setContentSize:imageView.frame.size];    
[scrollView addSubview:imageView];  
[imageView release];

imgPath是作为参数的图像路径,scrollView是链接到UIScrollView的IBOutlet。

UIImageView有什么我想念的吗? 正如我上面所写,似乎问题与缩放无关......

3 个答案:

答案 0 :(得分:0)

UIImage有一个imageOrientation属性。查看docs。它可以通过初始化程序设置:

UIImage *rotatedImage = [UIImage imageWithCGImage:[resizedImage CGImage] scale:1 orientation:UIImageOrientationUp]
  

创建并返回具有指定比例和的图像对象   取向因素。

+ (UIImage *)imageWithCGImage:(CGImageRef)imageRef scale:(CGFloat)scale orientation:(UIImageOrientation)orientation 
     

参数:

     
      
  • imageRef Quartz图像对象。

  •   
  • scale解释图像数据时使用的比例因子。   指定比例因子为1.0会导致图像的大小   匹配图像的基于像素的尺寸。应用不同的   比例因子会根据大小报告更改图像的大小   (页12)property。

  •   
  • orientation图像数据的方向。你可以用它   参数,用于指定应用于图像的任何旋转因子。

  •   
  • 返回值指定Quartz图像的新图像对象,或   如果方法无法初始化指定的图像,则为nil   图片参考。

  •   

答案 1 :(得分:0)

您确定在imageOrientation上按预期设置了resizedImage吗?缩放不正确可能会导致imageOrientation

答案 2 :(得分:0)

UIImage* image=[UIImage imageNamed:@"abc.jpg"];
UIImageOrientation orientation=image.imageOrientation;

在imageView或您想要使用的地方使用图片,

UIImageView* imageView=[[UIImageView alloc] initWithImage:image];

之后将图像重置为使用前的图像

UIImage* image1=[UIImage imageWithCGImage:[image CGImage] scale:1.0 orientation:orientation];

image1是您之前的方向图像