myFunction(400, 300, 50, 100)
=> 必须返回宽度和高度以按比例调整我的 400x300(第一个和第二个参数)图像的大小。调整大小后的图像 必须至少为 50x100 (第 3 个和第 4 个参数)。 52x.. 或 ..x102 完全可以,但“超大尺寸”必须尽可能小,以保持纵横比。
详情
[new_image_width, new_image_height] function(image_width, image_height, reference_width, reference_height)
此功能需要:
image_width
image_height
reference_width
reference_height
new_image_width
new_image_height
我的函数实际上不能调整图像的大小,而只能返回要调整大小的新整数。
注意:我对代码很满意,但数学水平只有一年级。请大家手下留情:-(
让
ratio = min(image_width / reference_width, image_height / reference_height)
然后返回
image_width / ratio
image_height / ratio
如果您确实关心舍入误差
找到 GCD
image_width
的最大公约数
image_height
。您可以制作的具有完全相同长宽比的最小图像具有尺寸
image_width' = image_width / GCD
image_height' = image_height / GCD
每一个具有完全相同长宽比的较大图像都是这些图像的整数倍。那么,让ratio_width = ceil(reference_width / image_width')
ratio_height = ceil(reference_height / image_height')
和
ratio = max(ratio_width, ratio_height)
那么你的结果是
ratio * image_width'
ratio * image_height'
好吧,试试这个:
function myFunction(image_width, image_height, reference_width, reference_height) {
var proportion = image_width/image_height;
if(reference_height*proportion < reference_width){
return [reference_width, reference_width/proportion];
} else {
return [reference_height*proportion,reference_height];
}
}