比例图像调整

时间:2020-03-06 14:32:41  来源:igfitidea点击:

我在将图像缩放到适当的预定义大小时遇到​​了一些问题。我在想,因为这纯粹是数学问题,是否存在某种适用于每种语言(PHP,ActionScript,Javascript等)的通用逻辑算法来按比例缩放图像。

我现在正在使用这个:

var maxHeight   = 300;
var maxWidth    = 300;

var ratio:Number    =   height / width;

if (height > maxHeight) {
    height = maxHeight;
    width = Math.round(height / ratio);
} 

else if(width > maxWidth) {
    width = maxWidth;
    height = Math.round(width * ratio);
}

但是它不能正常工作。图像会按比例缩放,这是足够确定的,但是大小未设置为300(无论是宽度还是高度)。这有点说得通,但我想知道是否存在一种简单有效的,按比例缩放图像的方法。

解决方案

我建议我们不要自己编写此代码;许多像素级的细节需要很长时间才能正确。使用ImageMagick,它是目前最好的图形库。

ratio = MIN( maxWidth / width, maxHeight/ height );
width = ratio * width;
height = ratio * height;

确保所有分隔线均为浮点数。

Dark Shikari拥有它。问题中所述的解决方案失败了,因为我们没有先确定哪个dimenson的尺寸与最大尺寸比例较大,然后再以该较大比例减小两个尺寸。

我们当前的解决方案是先对一个潜在的尺寸违规进行序列化的条件分析,然后再进行另一个条件的解析,否则将无法正常工作。

还要注意,如果我们想放大图像,则当前的解决方案将无法实现,而Dark Shikari的解决方案将再次实现。