youvision / think-randomcolor
ThinkPHP 8 随机颜色生成器,支持 HEX、RGB、HSV、HSL 及 CSS 等多种输出格式
v1.0.0
2026-11-09 07:07 UTC
Requires
- php: >=8.0
- topthink/framework: ^8.0
Requires (Dev)
None
Suggests
None
Provides
None
Conflicts
None
Replaces
None
README
面向 ThinkPHP 的开源工程索引:组件、框架、服务与发布工具,按能力组织,持续整理。 仓库地址:https://github.com/indiboy-create/ThinkPHP-PanGu/ 在线站点:https://indiboy-create.github.io/ThinkPHP-PanGu/
youvision/think-randomcolor
适配 ThinkPHP 8 的随机颜色生成器,支持多种色彩模型与输出格式,并提供配置文件、门面、助手函数和容器绑定。
环境要求
- PHP >= 8.0
- ThinkPHP >= 8.0
安装
composer require youvision/think-randomcolor
安装后服务通过 extra.think.services 声明。执行以下命令生成服务清单并完成注册:
php think service:discover
若应用的 app/service.php 未自动包含服务,也可手动注册:
return [ \Youvision\ThinkRandomColor\Service::class, ];
配置
将包内配置文件复制到应用的 config/randomcolor.php 即可覆盖默认值:
vendor/youvision/think-randomcolor/config/randomcolor.php
| 配置项 | 默认值 | 说明 |
|---|---|---|
format |
hex |
默认输出格式,可选 hex、hexa、hsv、hsva、hsl、hsla、hslCss、hslaCss、rgb、rgba、rgbCss、rgbaCss |
hue |
[] |
色相,支持颜色名、0-360 数值、random,或由它们组成的数组 |
luminosity |
空 | 亮度,可选 random、bright、light、dark |
alpha |
null |
透明度 0~1,仅对含 a 的格式生效;null 表示随机 |
prng |
null |
自定义随机数生成器,签名 function (int $min, int $max): int |
count |
1 |
many() 未传入数量时的默认生成个数 |
修改配置后如已开启配置缓存,需执行:
php think clear --config
使用
门面
use Youvision\ThinkRandomColor\Facade\RandomColor; // 默认 hex,如 #4fa3d1 RandomColor::one(); // 红色系 RandomColor::one(['hue' => 'red']); // 浅色 RandomColor::one(['luminosity' => 'light']); // 固定透明度 RandomColor::one(['format' => 'rgbaCss', 'alpha' => 0.5]); // 批量生成 RandomColor::many(5, ['hue' => ['blue', 'purple']]); // 使用配置中的 count RandomColor::many();
助手函数
random_color(); // 单个颜色 random_color(['hue' => 'green']); // 指定色相 random_colors(10); // 批量生成 random_colors(10, ['luminosity' => 'dark']); // 深色系
容器
$color = app(\Youvision\ThinkRandomColor\RandomColor::class); $color->one(); $color->many(3, ['format' => 'rgbCss']); // 也可使用别名 app('randomcolor')->one();
临时覆盖配置
$color = new \Youvision\ThinkRandomColor\RandomColor(['format' => 'hex']); $other = $color->withConfig(['format' => 'rgb']); $color->config()['format']; // hex $other->config()['format']; // rgb
颜色转换
use Youvision\ThinkRandomColor\RandomColor; RandomColor::hsv2hex(['h' => 0, 's' => 100, 'v' => 100]); // #ff0000 RandomColor::hsv2rgb(['h' => 120, 's' => 100, 'v' => 100]); // ['r' => 0, 'g' => 255, 'b' => 0] RandomColor::hsv2hsl(['h' => 240, 's' => 100, 'v' => 100]); // ['h' => 240, 's' => 100, 'l' => 50]
颜色名
hue 支持以下颜色名:
monochrome、red、orange、yellow、green、blue、purple、pink
也可直接传入 0-360 的色相值,或使用 random 完全随机。
输出格式
| 格式 | 示例 |
|---|---|
hex |
#ff0000 |
hexa |
#ff000080 |
hsv |
['h' => 0, 's' => 100, 'v' => 100] |
hsva |
['h' => 0, 's' => 100, 'v' => 100, 'a' => 0.5] |
hsl |
['h' => 0, 's' => 100, 'l' => 50] |
hsla |
['h' => 0, 's' => 100, 'l' => 50, 'a' => 0.5] |
hslCss |
hsl(0,100%,50%) |
hslaCss |
hsla(0,100%,50%,0.5) |
rgb |
['r' => 255, 'g' => 0, 'b' => 0] |
rgba |
['r' => 255, 'g' => 0, 'b' => 0, 'a' => 0.5] |
rgbCss |
rgb(255,0,0) |
rgbaCss |
rgba(255,0,0,0.5) |
格式名称不区分大小写。
测试
php tests/run.php
许可证
MIT,详见 LICENSE。