我有一個腳本,這對於一個簡單的任務來說非常大,因爲它經常被嵌套。它的作用是這樣的:計算新的圖像大小 - 我怎樣才能使這個效率更高/更短
- 得到的圖像
- 電流的大小得到新的最大尺寸
- 計算圖像將被調整到尺寸(寬高比始終保持):
- ,如果圖像是不是新的尺寸更小的:保持原始尺寸
- 如果最大新的維度具有x和y值:標度圖像,以適應這兩個值
- 如果最大新的維度僅具有的x VALU E:規模,以適應至少爲x
- 如果最大新的層面只有一個y值:規模,以適應至少Ÿ
這是腳本:
//example values, whereas 'new' is the maximum range for the new image
$dimensions = array(1920,1200);
$dimensionsNew = array(160, 0);
// percentage the image must be scaled
$percentages = array(0,0);
//calculate scale range
if ($dimensionsNew[0] != 0) $percentages[0] = $dimensions[0]/$dimensionsNew[0];
if ($dimensionsNew[1] != 0) $percentages[1] = $dimensions[1]/$dimensionsNew[1];
//get new dimensions
if (($dimensions[0] <= $dimensionsNew[0]) && ($dimensions[1] <= $dimensionsNew[1])) {
$dimensionsNew[0] = $dimensions[0];
$dimensionsNew[1] = $dimensions[1];
} elseif ($dimensionsNew[0] == 0) {
if ($dimensions[1] <= $dimensionsNew[1]) {
$dimensionsNew[0] = $dimensions[0];
$dimensionsNew[1] = $dimensions[1];
} else {
$dimensionsNew[0] = ceil($dimensions[0]/$percentages[1]);
}
} elseif ($dimensionsNew[1] == 0) {
if ($dimensions[0] <= $dimensionsNew[0]) {
$dimensionsNew[0] = $dimensions[0];
$dimensionsNew[1] = $dimensions[1];
} else {
$dimensionsNew[1] = ceil($dimensions[1]/$percentages[0]);
}
} elseif ($percentages[0] < $percentages[1]) {
$dimensionsNew[1] = ceil($dimensions[1]/$percentages[1]);
} else {
$dimensionsNew[0] = ceil($dimensions[0]/$percentages[0]);
}
它做它應該做的事情。但是有沒有更簡單的方法來做到這一點?我想我經常查看這些代碼,找不到優化的方法。
僅有評論重新代碼可讀性收縮,命名你的數組元素,如'$尺寸=陣列(X = 1920,Y = 1200 );'會讓你以後參考x和y。 – DaveP 2012-08-16 11:12:13
好想法啊。易於維護,比0 | 1 - 我可以看到。 – insertusernamehere 2012-08-16 11:15:26