将图像裁剪为特定比例的算法

时间:2011-09-13 12:26:34

标签: algorithm

我需要一种算法,给定图像的宽度,高度和目标比率将计算从图像的边缘剃光的像素数量,以达到该比率,在图像区域中具有最小的变化< /强>

如何实现这样的算法?

修改

很抱歉我的原始问题不一致;我修改了它。

2 个答案:

答案 0 :(得分:4)

  1. 将比例缩小为格式,使gcd(ratio_width,ratio_height)= 1。
  2. 计算楼面(宽度/ ratio_width)和楼层(高度/ ratio_height)。你的因素是这两者中的最小值。
  3. 将ratio_width和ratio_height乘以该因子以获得新的图像尺寸。
  4. 刮胡子。

答案 1 :(得分:0)

要最小化区域的变化,您需要找到适合原始图像边界的所需宽高比的最大矩形。

因此,如果原始图像太宽,则使最终图像的高度=原始高度,并削减额外的宽度。

如果原始图像太高,请使最终图像的宽度=原始宽度,并削减额外的高度。

注意:这假设您不允许增加超出原始尺寸的宽度或高度。如果不是这种情况,算法将是:

约束1:x_final * y_final = x_initial * y_initial

Contraint 2:x_final / y_final = r

解决方案是:

x_final = sqrt(r * x_initial * y_initial)

y_final = sqrt(x_initial * y_initial / r)