计算最大可能的矩形

时间:2011-06-30 18:02:49

标签: math

我正在将一些图片上传到网站。它们有各种不同的尺寸。如何在不旋转图像的情况下确定可以从特定图像中获取的最大4:3矩形?

3 个答案:

答案 0 :(得分:4)

如果纵横比小于4:3,请保持原始宽度并使用width*3/4的高度。如果纵横比大于4:3,请保持原始高度并使用宽度height*4/3

答案 1 :(得分:3)

IIUC这个问题非常类似于在给定矩形区域中最大化图像的常见问题。

假设您的屏幕为W * H像素(W = 4 * H / 3}并且图片为dx * dy,那么您可以使用比例因子

sf = min(W / dx, H / dy)

因为W / dx是一个缩放因子,会使图像的宽度与屏幕相同,而H / dy将是缩放因子,使其成为相同的高度。

取两者中的最小值将确保图像完全适合并且没有像素将进入屏幕外...取而代之的是确保屏幕完全覆盖(部分)图像和如果您试图从图像中获取壁纸,则可能很有用。

获得比例因子后,中心化所需的公式很简单:

x0 = (W - dx * sf) / 2
y0 = (H - dy * sf) / 2

您只需要从位置sf开始绘制由(x0, y0)缩放的图片。

答案 2 :(得分:0)

首先旋转图像,使其纵横比至少为1.现在,如果纵横比大于4/3,请保持高度并裁剪宽度;如果纵横比较小,请保持宽度并裁剪高度。