给定一张图片:
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/