【问题标题】:Algorithm for scaling image based on another image size and also preserve its aspect ratio基于另一个图像大小缩放图像并保持其纵横比的算法
【发布时间】:2017-04-02 20:45:40
【问题描述】:

我有 2 张图片,Image 1Image 2

图片 1 的尺寸为 512(宽)x 515(高)。

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

Image 2 将用作水印,并将放置在 Image 1 之上。

我希望 Image 2 的大小取决于 Image 1 的大小。 Image 2 可以根据 Image 1 的大小调整大小。

Image 2 的新尺寸(宽度和高度)应为 Image 120 百分比尺寸,同时保留其纵横比。

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

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

【问题讨论】:

  • 按面积计算 20%,还是按其中一个轴调整另一个轴的大小以保持纵横比?
  • @samgak 在宽度和高度上比图像 1 小 20%。我可以做这部分。现在的问题是我希望在缩放后也保持相同长度的纵横比。

标签: algorithm image-processing linear-algebra


【解决方案1】:

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

因此,选择一个您将用于缩放的轴,并将另一个轴缩放到保持纵横比的大小。

例如,使用宽度:

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 的高度,在这种情况下使用第二种方式,反之亦然。

【讨论】:

  • 对不起,我没有注意到图像尺寸是 512 * 515 而不是 512 * 512。已编辑答案
  • 我正在尝试,几分钟后会通知您
  • 只是为了让你知道第二张图片是水印图片,会放在第一张图片的前面。它只需要小一些百分比,并将放置在第一张图像的右上角。事实是没有人知道两个图像的大小。您在这个问题中看到的数字只是一个例子。自动重新缩放的东西并保持其比例是我正在努力解决的问题。只是想确保调整大小后的图像与原始图像没有太大差异。
猜你喜欢
  • 1970-01-01
  • 2010-11-25
  • 2012-11-15
  • 2015-07-31
  • 2013-06-26
  • 2012-04-15
相关资源
最近更新 更多