目标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; 

这将迫使它在缩放时保持图像的纵横比。 如参考文档中所述,还可以在此处设置其他一些值来产生其他行为。