-1

好的,我知道这听起来像是对另一个问题的重新发布,但我找不到任何人问与我相同的问题,或者我错了,因为这不是处理问题的方式,但无论如何它来了:

我有一个输入图像,比如 HD 1920*1080,我只知道一个比例因子:比如 0.3(原始尺寸的 30%)。如何计算接近原始目标 30% 的新目标大小,同时保持纵横比?换句话说,如何准确地将图像重新缩放到 30%?

如果这没有任何意义,请您告诉我如何在不知道目标大小且只知道比例因子的情况下缩放图像?

谢谢

ps:我用的是C/C++,但是伪代码还可以

4

1 回答 1

3

如果你的高度和宽度是整数,你可以这样做......

height = height * (int)(scaleFactor*100) / 100;
width  = width  * (int)(scaleFactor*100) / 100;

或者,此解决方案也适用于int浮点变量,但更有意义......

height = floor(height * scaleFactor);
width  = floor(width  * scaleFactor);

或者,无论变量类型如何,您都可以让编译器担心如何处理舍入...

height = height * scaleFactor;
width  = width  * scaleFactor;

...但是使用该解决方案,您可能会从一个平台到下一个平台的舍入误差为 1。不过,这在您的用例中可能并不重要。

另一种可能性,如果你scaleFactor本身是一个int并且(在这个例子中)是 30%,那么scaleFactor可能是 value 30,你只需这样做......

height = height * scaleFactor / 100;
width  = width  * scaleFactor / 100;

关键是,如果您将 x 和 y 坐标按相同的因子缩放,则可以保留原始纵横比。

于 2013-01-24T19:41:16.113 回答