好吧,我知道这听起来像是另一个问题的转贴,但我找不到任何人问我同样的问题,或者我错了,因为这不是解决问题的方法,但无论如何它来了:
我有一个输入图像,比如HD 1920 * 1080,我只知道比例因子:比如0.3(原始尺寸的30%)。 如何在保持纵横比的同时计算接近原始目标尺寸30%的新目标尺寸? 换句话说,如何准确地将图像重新缩放到30%?
如果这没有意义,请您告诉我如何在不知道目标尺寸的情况下缩放图像,只知道比例因子?
由于
Ps:我正在使用C / C ++,但伪代码没问题
答案 0 :(得分: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;
...但是使用该解决方案,您可能会从一个平台到下一个平台逐个舍入错误。不过,这可能与您的用例无关。
另一种可能性,如果您的scaleFactor
本身是int
并且(在此示例中)为30%,那么scaleFactor
可能是值30
,而您' d只是这样做......
height = height * scaleFactor / 100;
width = width * scaleFactor / 100;
关键是如果你同时扩展你的x& y坐标相同因子,保留原始宽高比。