按宽度按比例调整 UIImage 的大小

Posted

技术标签:

【中文标题】按宽度按比例调整 UIImage 的大小【英文标题】:Proportionally resize UIImage by width 【发布时间】:2014-10-12 19:57:14 【问题描述】:

我需要按宽度按比例调整UIImage 的大小,可能有人有工作代码吗?

例如:

输入:宽度:900 高度:675。调整为宽度:400 宽度

结果:宽度:400 高度:300

请帮忙..

【问题讨论】:

你试过什么?看看这个答案:***.com/a/537697/1066424 我没有“targetSize”,我只有宽度,没有高度 newHeight = newWidth / oldWidth * oldHeight 【参考方案1】:

检查this blog post。特别是这两个文件:

UIImage+Resize.h UIImage+Resize.m

也许这对你有用:

UIImage *image = [UIImage imageNamed:@"SomeImage-900x675"]; // SomeImage-900x675.png
CGFloat targetWidth = 400.0f;

CGFloat scaleFactor = targetWidth / image.size.width;
CGFloat targetHeight = image.size.height * scaleFactor;
CGSize targetSize = CGSizeMake(targetWidth, targetHeight);

UIImage *scaledImage = [image resizedImage:targetSize interpolationQuality:kCGInterpolationHigh];

【讨论】:

我需要像在 Photoshop 中一样的高度,当您设置新的图像尺寸并输入新的重量时,它会以编程方式显示新的高度.. 所以我需要一个公式.. 你有吗? 我编辑了我的答案以包含一个示例用法。希望它有所帮助。 targetHeight 不会是 size.height 的一个因素,而不是 size.width? @TahoeWolverine 不错。我已经更正了示例。【参考方案2】:

你不能设置内容模式吗?到.ScaleAspectFill?然后您可以将 UIImageView 的大小设置为任意大小,并且将保留纵横比。

https://developer.apple.com/reference/uikit/uiviewcontentmode/1622518-scaleaspectfill

【讨论】:

太好了,谢谢!我从没想过检查……工作得很好。

以上是关于按宽度按比例调整 UIImage 的大小的主要内容,如果未能解决你的问题,请参考以下文章

使 UIImageView 及其 UIImage 按比例缩放而无需额外的填充

Internet Explorer 9 - 按比例调整图像大小

jQuery动态比例元素/图像调整大小

按比例禁用 SVG 自动缩放

UIImage 调整大小

在用mapgis出图时在出图比例尺和纸张大小一定时,如何合理的调整页面宽度和高度,悬赏10分