情景
我有一份打印格式列表和一张上传的图片。
图像可以很好地匹配某些格式,而其他格式则较少。
例如,如果图片的比例为4:3
,则其格式为40 x 30 cm
。
但是,也有一些格式不完全符合图像,例如:40 x 35 cm
。
问题
格式需要根据图像的适合程度进行排序。
代码
$formats = array(
'30x40',
'35x40',
'40x60'
);
// Ratios in the format (such as 3:4) won't serve us in calculations.
// Therefore we use the images aspect factor, which we compute
// like this:
$imageAspectFactor = $imageX / $imageY;
至少我认为我能做到这一点。
问题
从现在开始,我不知道该往哪里去。从数学上讲,如何将图像的方面因子与(当前)格式(在循环中)的结果方面因子进行匹配,以便结果值可以用作构建新的有序数组的数组键。格式?
为了更好地理解这一点,请参阅以下实用代码段:
实用代码
$formats = array(
'30x40',
'35x40',
'40x60'
);
foreach($formats as $formatString){
list($formatX, $formatY) = explode('x', $formatString);
$formatAspectFactor = $formatX / $formatY;
$output[/* NUMERIC THAT REPRESENTS HOW WELL FORMAT MATCHES IMAGE*/] = $formatString;
}
ksort($output);
请注意:我不需要一个完整的解决方案,除非你觉得过于激励。我所寻找的是数学理解如何计算一个数字与另一个数字的匹配程度,并以某种方式用数字表示。