给定一个长宽比为sx/sy的矩形S,和另外两个长宽比分别为ax/ay和bx/by的矩形A和B,如何确定哪个形状的长宽比与S最接近?这些形状的大小不重要。
是不是只需要比较(sx/sy)/(ax/ay)和(sx/sy)/(bx/by)哪个更接近1呢?
实际上,我想要做的是找到在PPTX幻灯片中最适合调整大小并裁剪以适应该形状的图像。我想另一种方法是计算哪个形状会导致丢失最少的像素,但在我的代码中,如果可以通过比较长宽比来完成,则更容易实现。
最终,我采用了以下算法,并按以下方式实施(感谢Matt Ball的反馈):
是不是只需要比较(sx/sy)/(ax/ay)和(sx/sy)/(bx/by)哪个更接近1呢?
实际上,我想要做的是找到在PPTX幻灯片中最适合调整大小并裁剪以适应该形状的图像。我想另一种方法是计算哪个形状会导致丢失最少的像素,但在我的代码中,如果可以通过比较长宽比来完成,则更容易实现。
最终,我采用了以下算法,并按以下方式实施(感谢Matt Ball的反馈):
ShapeInPPTXLocation closest;
double imageAR = a_imageDim.getWidth()/a_imageDim.getHeight();
double aspectRatioCandidateA = a_candidateA.getWidth()/a_candidateA.getHeight();
double aspectRatioCandidateB = a_candidateB.getWidth()/a_candidateB.getHeight();
double closenessScoreA=1-(imageAR/aspectRatioCandidateA);
double closenessScoreB=1-(imageAR/aspectRatioCandidateB);
if (Math.abs(closenessScoreA) <= Math.abs(closenessScoreB))
{
closest=a_candidateA;
}
else
{
closest=a_candidateB;
}
0.0000001
比5
更接近于2
。 - Matt Ball