画布内的图像缩放

时间:2013-12-16 09:20:09

标签: image math transformation

假设我们有一个容量为500 x 300(宽x高)的容器。 在这个容器里面,我们有一个相同大小的画布,但里面有一个不同的参考系统,大小为700 x 1000。

当我在这个画布上放置700 x 1000的图像时,它显然会显得扭曲,因为画布占据了其父容器的整个500 x 300像素 - 即使它内部仍然是700 x 1000。

现在,我正在尝试找出一个公式来缩放interlal参考系统中的图像,这样图像就不会出现扭曲然后加载到画布中。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

首先,如果你有w = 700,h = 1000,即w_container / w_canvas = 5/7!= h_container / h_canvas = 3/10,你将无法加载你的图像没有被扭曲和服用容器的整个空间。我可以告诉你如何正确调整图像大小。

要保存图像的宽高比(等于7/10,我认为这就是“失真图像”下的含义),您应该计算图像在画布上放置后图像的比例重新缩放。 canvas_ratio(7/10)* x = container_ratio(5/3),因此x = 50/21。因此,如果您的图像具有比率y,那么它将变为y * x = y * 50/21。

因此,您应该先将图像调整大小,然后再将其放在画布上,这样在将此比率乘以x后,它将为7/10(图像看起来完美时的比率)。我们有一个方程y * 50/21 = 7/10,因此 y = 147/500 。这是你的形象应该有的比例! 例如,您可以将图像大小设置为294x1000,并且在将其放入画布后,它将在容器的坐标系中具有300像素的高度,并且294 *(500/700)= 210像素宽度(不幸的是,不是500)。希望这对您有用。

祝你好运!