目标C:如何修复图像的纵横比(而不是改变以适应imageview框架)
我正在使用UIImagePickerController为我的应用程序select图像。 不过,在维护所选图像的宽高比方面,我面临一些挑战
例如,
我在手机上的原始图像如下(不是方形图像):
在iphone上通过“移动和缩放”页面select图像裁剪图像后,结果如下:(纵横比仍然保持在这里)
我的应用程序将显示在一个方形框架(200 x 200)的UIImageView中选定的图像。 将所选图像设置为UIImageView(UIImageView.image = selectedImage)后,图像的纵横比不会保持,而是沿着UIImageView的框架:(图像在我的UIImageView中现在看起来倾斜了):
在这种情况下,有没有办法保持图像的宽高比?
编辑:更新预期结果
经过一番思考,我意识到解决我的问题的最好办法是确保对于这样的图像(非方形),我需要将它们“转换”为方形图像,即填充图像顶部和底部的空白空间以制作正方形
预期图像:(添加顶部和底部边框)
编辑:更新示例代码
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)img editingInfo:(NSDictionary *)editInfo { self.imageView.contentMode = UIViewContentModeScaleAspectFill; self.imageView.image = image; [[picker parentViewController] dismissModalViewControllerAnimated:YES]; //Compress image UIImage *image = [self scaleImage:img toSize:CGSizeMake(612.0,612.0)]; self.imageData = UIImageJPEGRepresentation(image, 0.75); }
通过添加代码“self.imageView.contentMode = UIViewContentModeScaleAspectFill;”,我能够获得uiimageview中的方形图像
但似乎原来的图像仍然不是一个正方形的图像,因此当我做“UIImage * image = [self scaleImage:img toSize:CGSizeMake(612.0,612.0)];”时,仍然会出现歪斜问题。 我的假设是否正确? 无论如何,以缓解这个问题,因为我仍然需要在应用程序的其他地方显示“压缩”的图像。
做myImageView.contentMode = UIViewContentModeScaleAspectFit;
是不够的,因为它改变了图像的纵横比,而不会改变震源所需要的图像。 唯一的方法是使用UIGraphicsImageContext,如下所示: 调整UIImage的高宽比?
你应该调整你的UIImageView
的内容模式:
myImageView.contentMode = UIViewContentModeScaleAspectFit;
只是踢 – 检查UIViewContentMode
常量的文档。
您可以在您的UIImageView
实例上设置contentMode
属性,如:
myImageView.contentMode = UIViewContentModeScaleAspectFit;
这将迫使它在缩放时保持图像的纵横比。 如参考文档中所述,还可以在此处设置其他一些值来产生其他行为。