重新缩放图像只需知道保留纵横比的比例因子即可
Rescaling an image just knowing a scale factor preserving aspect Ratio
好吧,我知道这听起来像是另一个问题的转发,但我找不到任何人问和我一样的问题,或者我错了,因为这不是处理问题的方式,但无论如何它来了:
我有一个输入图像,比如HD 1920 * 1080,我只知道一个比例因子:比如0.3(原始尺寸的30%)。如何在保持纵横比的同时计算接近原始目标大小 30% 的新目标大小?换句话说,如何将图像准确地重新缩放到30%?
如果这毫无意义,请您告诉我如何在不知道目标大小而只知道比例因子的情况下缩放图像?
谢谢
Ps:我使用的是C/C++,但是伪代码还可以
如果你的高度和宽度是整数,你可以这样做......
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
可能是值30
,你只需这样做......
height = height * scaleFactor / 100;
width = width * scaleFactor / 100;
关键是,如果将x和y坐标按相同的因子缩放,则可以保留原始纵横比。
相关文章:
- UE4-如何在给定4个屏幕坐标的情况下缩放纹理或材质
- 计算缩放多边形的比例,得到给定的多边形面积
- QwtPlot具有相等的轴和自动缩放
- 如何在directx/c++中进行平移/缩放操作
- 在Qt中实现无限可缩放的画布
- 是否可以为 QPixmap 派生类嵌入缩放方法?
- 形状对象的旋转和缩放不正确C++
- 如何在 OpenSceneGraph 中缩放/旋转/移动资产
- 如何在OpenGL(GLFW,很高兴)中进行2D缩放?
- 改变或缩放两个正态分布以具有特定的相关系数
- SDL2 调整窗口大小后如何缩放鼠标坐标?
- 如何在OpenGL中正确旋转和缩放对象?
- 仅当类型为 std::complex 时,才进行缩放
- 将 VS Code 用于跨平台可缩放C++项目
- 根据帧速率缩放/缩小数字
- 在 c++ 中缩放浮点值
- 如何防止 DirectX C++程序的拉伸/缩放
- 使用提升几何缓冲区缩放多边形时的冗余折点
- 如何缩放二进制数组以保留值
- 重新缩放图像只需知道保留纵横比的比例因子即可