如何根据不同尺寸的最大宽度和高度计算图像的比例因子
How To Calculate Scale Factor Of Image Based On Max Width and Height Of Different Sizes
我正在尝试进行一个简单的计算来计算比例因子,以便图像可以完美地适合容器大小而无需拉伸。这意味着原始图像可能要溢出它需要容纳的容器,这没关系。
问题是图像可以是任何大小,它可以在 W 和 H 中都比容器大,在 W 中大,在 H 中大或在任何这些情况下都小。
例如,我们有以下包含框:
500x500
500x1000
1000x500
300x300
200x50
50x200
并且我想要一张 500x500 的图像以适应它们,但保持它自己的比例;所以它会在某些方向溢出其中一些容器,但不会在其他方向溢出。
代码使用什么语言并不重要,我现在正在使用 JS,我正在努力解决的只是它背后的计算。如果只有一种尺寸的容器,问题不大,但我正在努力寻找一种适合所有尺寸的配方。
根据评论,解决方案可以改写为:
- 步骤1如果图片高度小于容器高度,放大以适应。
- 步骤2如果图片宽度小于容器宽度,进一步放大以适应。
- 第 3 步 如果第 1 步和第 2 步中的任何一个为真,转到第 5 步。
- 第4步取(图片高度-容器高度)和(图片宽度-容器宽度)中的最小值。缩小比例。
- 第 5 步 裁剪过剩
完成
请注意,总共应该进行 0 或 1 次放大或缩小,并保持原始比率。
我正在尝试进行一个简单的计算来计算比例因子,以便图像可以完美地适合容器大小而无需拉伸。这意味着原始图像可能要溢出它需要容纳的容器,这没关系。
问题是图像可以是任何大小,它可以在 W 和 H 中都比容器大,在 W 中大,在 H 中大或在任何这些情况下都小。
例如,我们有以下包含框:
500x500 500x1000 1000x500 300x300 200x50 50x200
并且我想要一张 500x500 的图像以适应它们,但保持它自己的比例;所以它会在某些方向溢出其中一些容器,但不会在其他方向溢出。
代码使用什么语言并不重要,我现在正在使用 JS,我正在努力解决的只是它背后的计算。如果只有一种尺寸的容器,问题不大,但我正在努力寻找一种适合所有尺寸的配方。
根据评论,解决方案可以改写为:
- 步骤1如果图片高度小于容器高度,放大以适应。
- 步骤2如果图片宽度小于容器宽度,进一步放大以适应。
- 第 3 步 如果第 1 步和第 2 步中的任何一个为真,转到第 5 步。
- 第4步取(图片高度-容器高度)和(图片宽度-容器宽度)中的最小值。缩小比例。
- 第 5 步 裁剪过剩
完成
请注意,总共应该进行 0 或 1 次放大或缩小,并保持原始比率。