image-processing - 将图像调整为最大高度和最大宽度范围的数学

标签 image-processing resize scaling

给定一张图片:

maxWidth = 400;
maxHeight = 200;
width = photo.Width;
height = photo.Height;

如果任一维度超过最大属性,我将如何缩放图像?

下面是一些测试用例:

300x300  :   Too tall, but width ok.
500x200  :   Too wide, but height ok.
650x300  :   Too tall and too wide
300x190  :   Fine, don't resize

我无法想象这方面的数学运算,如果它太简单了,我深表歉意!给我最麻烦的情况是两个维度都超过允许的最大值。

最佳答案

分别计算所需的垂直和水平缩放,然后选择两者中较小的一个并将结果限制为最大值1。代码中:

scale = min(1, min(maxWidth/photo.Width, maxHeight/photo.Height))

确保除法运算使用浮点运算。如何做到这一点因语言而异。在 C/Java/C# 及其同类产品中,将其中一个操作数强制转换为 float 。

关于image-processing - 将图像调整为最大高度和最大宽度范围的数学,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3676118/

相关文章:

java - 自动调整 Canvas 大小以填充封闭的父级

Android ImageView缩放冲突

amazon-ec2 - Amazon EC2 中的负载均衡?

python - 通过 scipy.misc.imsave 将图像保存为 tif 时如何指定 dpi?

python - 图像的二维旋转

javascript - 如何保存和删除 Canvas 状态?

html - 如何使用窗口更改图库缩略图的大小?

python - 在云中的节点(应用程序服务器)之间共享数据

python - 如何在赋值期间以向量化方式移动输出变量(在 numpy 中)的索引

java - 为什么 BufferedImage 不能正常工作?!!是因为我用错了吗?