将确定缩放图像的适当尺寸的代码

时间:2014-08-29 03:00:24

标签: c# javascript jquery asp.net

我甚至没有完全理解。任何人都可以形容我们想要什么以及如何做到这一点。

你能指导我吗?

1 个答案:

答案 0 :(得分:2)

如果必须保持纵横比,那只意味着您需要将高度和宽度缩放完全相同的量。这是一个相当容易满足的要求 - 您只需计算所需的比例并将其应用于这两个维度。

为了确保图像仅按向下缩放,您只检查超出上限的限制,并在这些情况下进行缩放。例如,如果高度和宽度均小于1001,并且像素数小于500,000,则根本不需要进行缩放。

检查其他要求的上限如下:

首先,如果高度大于1000,只需按1000/height缩放高度和宽度。这会将高度降低到1,000并相应地调整宽度。

接下来,如果宽度大于1000,只需按1000/width缩放高度和宽度(由于高度可能已经缩放)。这会将宽度降低到1,000,并再次通过按比例缩小高度来保持纵横比。

最后,您需要检查像素数,计算结果为height * width。高度和宽度均为1,000或更小,您的像素数可能仍高达一百万。

如果超过500,000,则以像素数低于该值的方式缩放高度和宽度。因为它是二维值,所以您可以按500,000 / (height * width)平方根进行缩放。

因此,就伪代码而言,你正在寻找类似的东西:

if h > 1,000:
    scale = 1,000 / h
    h = h * scale       # will be 1,000
    w = w * scale

if w > 1,000:
    scale = 1,000 / w
    h = h * scale
    w = w * scale       # will be 1,000

if h * w > 500,000:
    scale = sqrt (500,000 / (h * w))
    h = h * scale
    w = w * scale

检查带有一些样本值的第三部分代码(800 x 700,给出560,000像素)会产生以下结果:

  800 * sqrt (500K/560K) -> 755
  700 * sqrt (500K/560K) -> 611

  755 * 611 -> 499,055 pixels, so scaled down okay.
  Ratio of 755/611 is same (roughly) as 800/700.
相关问题