例如,如果需要填充100px宽×50px高的边框,则以下输入图像将具有以下行为:
200w x 200h缩小了50%,并且
25%被砍掉
底部。
200w x 100h可缩小50%
不修剪。
100W x 200H未缩放,但
上下各切75像素。
这似乎是一个常见的调整大小的函数,但我还没有找到算法的示例。
将接受任何语言的答案,包括伪代码。一个链接到一个有答案的页面也很棒!
最佳答案
你要的东西很简单。计算宽度和高度的不同比例因子,然后为实际比例因子选择较大的比例因子。将输入大小乘以比例,然后裁剪出太大的一个。
scale = max(maxwidth/oldwidth, maxheight/oldheight)
scaledwidth = oldwidth * scale
scaledheight = oldheight * scale
if scaledheight > maxheight:
croptop = (scaledheight - maxheight) / 2
cropbottom = (scaledheight - maxheight) - croptop
if scaledwidth > maxwidth:
cropleft = (scaledwidth - maxwidth) / 2
cropright = (scaledwidth - maxwidth) - cropleft