缩放图像以完全填充边界框

Lar*_*nal 8 algorithm image image-scaling

例如,如果我需要填充宽度为100px,高度为50px的边界框,则以下输入图像将具有以下行为:

  1. 200w x 200h缩小50%,25%从顶部和底部切断.

  2. 200w x 100h缩小50%,没有裁剪.

  3. 100w x 200h得分未缩放,但75px从顶部和底部切断.

这似乎是一个常见的调整大小功能,但我无法追踪算法的一个例子.

将接受任何语言的答案,包括伪代码.带答案的页面链接也很棒!

Mar*_*som 13

你要求的是非常容易的.计算宽度和高度的不同比例因子,然后选择较大的比例因子作为实际比例因子.将您的输入大小乘以比例,然后裁剪出来的任何一个太大.

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
Run Code Online (Sandbox Code Playgroud)