UIImage调整大小并剪裁以适应

时间:2012-03-19 16:43:13

标签: objective-c uiimageview uiimage image-resizing

我在这里读了很多,但找不到一个简单的方法: 在目标c - 我有一个很大的UIImage和一个小的UIImageView。我想以编程方式收缩UIImage的内容,足以适应UIImageView中较小的维度。将裁剪较大的尺寸,结果将是我可以从图像中获得的最大尺寸,而不会改变比例。

你能帮我吗?

2 个答案:

答案 0 :(得分:2)

要以合适的方式显示图像,您只需将imageView.image属性设置为图像,然后根据自己的喜好调整imageView.contentMode。根据你所写的内容,我认为UIViewContentModeScaleAspectFill正是您所寻找的,但请一起玩,看看哪种方式最适合您。

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

答案 1 :(得分:1)

在视图中我想将图像嵌入到我使用此代码中:

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还不够。