Просмотр исходного кода

修正图片分辨率判定方式

lh 1 месяц назад
Родитель
Сommit
9316d16cb6
1 измененных файлов с 9 добавлено и 7 удалено
  1. 9 7
      app/Services/PointsService.php

+ 9 - 7
app/Services/PointsService.php

@@ -410,8 +410,9 @@ class PointsService
     /**
      * 根据图片宽高归一化分辨率档位(1k/2k/4k)
      *
-     * 2k 常见尺寸:2048x2048、1600x2848、2560x1440 等;
-     * 4k:4096x4096、4992x3328、3040x5504 等;其余更小尺寸归为 1k。
+     * 按宽高乘积(面积)分档更准确:各档面积几乎成平方关系——
+     * 1k≈1MP(1024x1024)、2k≈4MP(2048x2048、1600x2848)、3k≈9MP(3072x3072、4096x2304)、4k≈16MP(4096x4096)。
+     * 目前没有 3k 计费档,3k 尺寸直接按 4k 计费。
      *
      * @param int $width
      * @param int $height
@@ -422,15 +423,16 @@ class PointsService
         if ($width <= 0 || $height <= 0) {
             return '2k';
         }
-        $maxDim = max($width, $height);
+
+        // 面积分档:<2MP 视为 1k;2MP~6MP 视为 2k;≥6MP(含3k/4k尺寸)按 4k 计费
         $area = $width * $height;
-        if ($maxDim > 4096 || $area >= 4096 * 4096) {
-            return '4k';
+        if ($area < 2048 * 1024) {
+            return '1k';
         }
-        if ($maxDim > 1536) {
+        if ($area < 2048 * 3072) {
             return '2k';
         }
-        return '1k';
+        return '4k';
     }
 
     /**