UIImage 调整大小并裁剪以适合

Posted

技术标签:

【中文标题】UIImage 调整大小并裁剪以适合【英文标题】:UIImage resize and crop to fit 【发布时间】:2012-03-19 16:43:13 【问题描述】:

我读了很多,也在这里,但找不到简单的方法: 在目标 c - 我有一个大的 UIImage 和一个小的 UIImageView。我想以编程方式缩小 UIImage 的内容,使其刚好适合 UIImageView 中的较小尺寸。较大的尺寸将被裁剪,结果将是我可以在不改变比例的情况下从图像中获得的最大值。

你能帮帮我吗?

【问题讨论】:

你想重新计算一个新的图像还是把图像插入你的 imageView 并让它正确显示? 只需将其插入 imageView。 那就试试 Ahti 的回答吧。 【参考方案1】:

要以合适的方式显示图像,您实际上只需将imageView.image 属性设置为您的图像,然后根据自己的喜好调整imageView.contentMode。从您写的内容来看,我认为 UIViewContentModeScaleAspectFill 是您正在寻找的内容,但请尝试使用它来查看最适合您的内容。

如果您想将图像保存在设备上并且绝对确定您永远不需要更大版本的图像,那么缩小它当然会节省一些磁盘空间并且是合理的要做的事情。 您可能会通过 CoreGraphics 执行此操作。您设置了具有所需尺寸的位图上下文,并告诉图像在其中绘制自身,然后返回结果图像。 然而,从性能方面来说,这将是一件相当昂贵的事情,而且对于每个需要缩小的图像,您应该只做一次。此外,您也不想在主线程上执行此操作,但 GCD 让这很容易。

【讨论】:

【参考方案2】:

在我想将图像嵌入的视图中,我使用了以下代码:

int xImage=image.size.width;
int xButton=self.frame.size.width;
double ratio=xButton/xImage;
self.imageView.contentMode = UIViewContentModeScaleAspectFill;
[self setImage:[UIImage imageWithCGImage:[image CGImage] scale:ratio orientation:image.imageOrientation] forState:UIControlStateNormal];
[self setImage:[UIImage imageWithCGImage:[image CGImage] scale:ratio orientation:image.imageOrientation] forState:UIControlStateHighlighted];
self.imageView.contentMode = UIViewContentModeScaleAspectFill;

这解决了它。 UIViewContentModeScaleAspectFill 还不够。

【讨论】:

以上是关于UIImage 调整大小并裁剪以适合的主要内容,如果未能解决你的问题,请参考以下文章

如何将 UIImage 调整为特定大小

调整裁剪图像的大小 Objective-C

调整 UIImage 大小 - 性能问题

如何使用 vb.net 和 SQL Server 裁剪和调整图像大小

调整 UIImage 大小的哪种方法更好,为啥?

如何调整 UIView 的大小以获取大量 UILabel 并调整 UILabel 的大小以适合文本?