我正在尝试在纵向模式下显示通过相机拍摄的图像,但我总是在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有什么我想念的吗? 正如我上面所写,似乎问题与缩放无关......
答案 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是您之前的方向图像