From a24d093441d14af5f284fbc65a65360b15005f1e Mon Sep 17 00:00:00 2001 From: yuanjiajia <1139393632@qq.com> Date: Wed, 19 Jul 2023 15:49:08 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B8=B2=E6=9F=93=E6=B5=8B=E5=BC=8F=20?= =?UTF-8?q?=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/utils/MatHelper.php | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/src/utils/MatHelper.php b/src/utils/MatHelper.php index 7dda7d9..753cf1d 100644 --- a/src/utils/MatHelper.php +++ b/src/utils/MatHelper.php @@ -12,6 +12,8 @@ use Blobt\Luxcore\scene\texture\transform\NormalMap; use GuzzleHttp\Client; use GuzzleHttp\RequestOptions; use Imagick; +use Spatie\Color\Factory; +use Spatie\Color\Hsb; class MatHelper{ @@ -38,21 +40,16 @@ class MatHelper{ * 获得 十六进制颜色 同色调 的 最大亮度 */ static function colorMaxBrightness($hexColor,$scale){ - $r = (hexdec(substr($hexColor, 1, 2))); - $g = (hexdec(substr($hexColor, 3, 2))); - $b = (hexdec(substr($hexColor, 5, 2))); + // 十六进制颜色 转 HSB色 + $color = Factory::fromString($hexColor); + $color = $color->toHsb(); - $MaxBrightnessPass = 0; - foreach([$r, $g, $b] as $value){ - $MaxBrightnessPass = $value > $MaxBrightnessPass ? $value : $MaxBrightnessPass; - } - - $gain = (255 - $MaxBrightnessPass) / 255 * $scale; - $r =dechex(round($r + 255 * $gain)); - $g =dechex(round($g + 255 * $gain)); - $b =dechex(round($b + 255 * $gain)); + // 亮度提升 + $currentBri = $color->brightness(); + $gain =$currentBri + (100-$currentBri) * $scale; + $color = new Hsb($color->hue(), $color->saturation(), $gain); - return "#{$r}{$g}{$b}"; + return $color->toHex(); }