我正在将一些图片上传到网站。它们有各种不同的尺寸。如何在不旋转图像的情况下确定可以从特定图像中获取的最大4:3矩形?
答案 0 :(得分:4)
如果纵横比小于4:3,请保持原始宽度并使用width*3/4
的高度。如果纵横比大于4:3,请保持原始高度并使用宽度height*4/3
。
答案 1 :(得分:3)
IIUC这个问题非常类似于在给定矩形区域中最大化图像的常见问题。
假设您的屏幕为W * H
像素(W = 4 * H / 3
}并且图片为dx * dy
,那么您可以使用比例因子拉伸图像以在屏幕内最大化它p>
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,请保持高度并裁剪宽度;如果纵横比较小,请保持宽度并裁剪高度。