寻找一个允许我完成此任务的表达式:
我有一个任意宽度/高度的图像,我可以在绘制之前抓住它的尺寸 因为图像可能非常大,我想缩小它。
我的画布的宽度为w,高度为h 为了便于说明,我们只说它是320x240。
如果图像的尺寸等于或小于画布的尺寸,则比例尺仅为1。 如果它们更大,我将按比例缩放它与画布尺寸相比的大小。
因此,例如,如果我的图像是640x480,我的比例将是0.5
如果我的图像是640x240,我的比例仍然是0.5
同样,如果它是320x480
这可以用单个数学表达式编写吗?例如:
def scale_ratio(canvas_width, canvas_height, image_width, image_height) #math formula for calculating scale return scale
答案 0 :(得分:2)
function scale(canvas_width, canvas_height, image_width, image_height) {
return Math.min(Math.max(canvas_width / image_width, canvas_height / image_height), 1);
}
编辑:你可能想要做这样的事情来减少舍入错误:
var scale_width = image_width;
var scale_height = image_height;
if (image_width > canvas_width || image_height > canvas_height) {
var image_ratio = image_height / image_width;
if (image_ratio * canvas_width > canvas_height) {
scale_width = canvas_height / image_ratio;
scale_height = canvas_height;
} else {
scale_width = canvas_width;
scale_height = image_ratio * canvas_width;
}
}