用于基于另一图像尺寸缩放图像并且还保持其纵横比的算法

时间:2016-11-18 21:57:35

标签: algorithm image-processing linear-algebra

我有2张图片,图片1 图片2

图像1 的大小为512(宽)x 515(高)。

然后图像2 ,大小为256(宽)x 256(高)。

图像2 将用作水印,并将放置在图像1 的顶部。

我希望 Image 2 大小依赖于 Image 1 大小。 图像2 可以根据图像1 的大小向上或向下调整大小。

Image 2 的新尺寸(宽度和高度)应 20 Image 1 的大小,同时保留它的宽高比。

找到 Image 2 的新尺寸(宽度和高度)的算法是什么?

现在,我使用(20%/100) * 512调整大小,但这不会保留 Image 2 宽高比。

1 个答案:

答案 0 :(得分:2)

如果这两个图像没有相同的宽高比,那么在数学上不可能将宽度和高度都缩放20%并保留纵横比。

因此,选择一个用于缩放的轴,并将另一个缩放到保留宽高比的大小。

例如,使用width:

new_image1_width = 512 * (20 / 100) = 102.4

然后计算新高度以保持纵横比:

original_aspect_ratio = image2_width / image2_height = 256 / 256 = 1
new_image1_height = 102.4 / original_aspect_ratio = 102.4

或者以另一种方式(此时乘以比率):

new_image1_height = 515 * (20 / 100) = 103
original_aspect_ratio = image2_width / image2_height = 256 / 256 = 1
new_image1_width = 103 * original_aspect_ratio = 103

如果您必须处理任意图像大小和任意比例因子,则需要在两种方式之间进行两次切换,具体取决于您希望规则的范围。例如。你总是可以选择两者中较小的一个,或者使用比例调整的高度,除非这会给你一个高于图像1高度的高度,在这种情况下使用第二种方式,反之亦然。