尺寸計算
本頁說明 GetNewSize 如何依 s、w、h 決定輸出尺寸,以及未帶尺寸參數時的預設縮圖規則。
規則
條件由上而下判斷,只套用第一個成立的:
| 條件 | 輸出 |
|---|---|
s 有值 |
短邊縮至 min(s, 原短邊),長邊等比例 |
w 與 h 皆有值 |
依 min(w, 原寬) 計算縮放比,整張等比例縮放 |
只有 w |
寬縮至 min(w, 原寬),高等比例 |
只有 h |
高縮至 min(h, 原高),寬等比例 |
| 皆無,且原圖短邊 > 1024 px | 長邊縮至 1024 px,短邊等比例 |
| 其他 | 維持原尺寸 |
所有規則都不放大原圖。
邊界行為
| 情境 | 結果 | 原因 |
|---|---|---|
w 與 h 同時指定 |
實際高度為 原高 × (新寬 ÷ 原寬),h 不影響輸出 |
Resize 只接收單一縮放比 newWidth / originWidth |
s/w/h 不是整數 |
維持原尺寸,不套用 1024 px 預設 | 參數非空即進入該分支,strconv.Atoi 失敗後不再往下判斷 |
| 原圖短邊 ≤ 1024 px 且無尺寸參數 | 原尺寸輸出,仍會轉成 t 指定格式 |
預設規則只處理大圖 |
範例
以 4000 × 3000 的原圖為例:
| 請求參數 | 輸出尺寸 |
|---|---|
| (無) | 1024 × 768 |
s=480 |
640 × 480 |
w=800 |
800 × 600 |
h=300 |
400 × 300 |
w=800&h=200 |
800 × 600 |
s=5000 |
4000 × 3000 |