将确定缩放图像的适当尺寸的代码
本文关键字:代码 缩放 图像 | 更新日期: 2023-09-27 18:20:00
我甚至不理解整个部分。有人能描述一下他们想要什么以及如何做到吗。
你能指导我做这件事吗。
如果必须保持纵横比,这意味着您需要按完全相同的量缩放高度和宽度。这是一个相当容易满足的要求——你只需计算出所需的比例,并将其应用于两个维度。
为了确保图像只缩小,您只检查是否超过上限,并在这些情况下进行缩放。例如,如果高度和宽度都小于1001,像素数小于500000,则根本不需要缩放。
检查其他要求的上限如下:
首先,如果高度大于1000,只需按1000/height
缩放高度和宽度即可。这将高度降低到1000,并相应地调整宽度。
然后,如果宽度大于1000,则只需将高度和宽度(可能由于高度的原因已经缩放)缩放1000/width
。这将宽度降低到1000,并再次通过将高度缩小相同的量来保持纵横比。
最后,您需要检查像素计数,该计数计算为height * width
。如果高度和宽度都小于或等于1000,则像素数可能仍高达一百万。
如果超过500000,则缩放高度和宽度,使像素数低于该值。因为它是二维值,所以可以按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乘700,给出560000像素),得到以下结果:
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.