Search by

youvision / think-randomcolor

indiboy-create

ThinkPHP 8 随机颜色生成器,支持 HEX、RGB、HSV、HSL 及 CSS 等多种输出格式

Package info

github.com/indiboy-create/think-randomcolor

pkg:composer/youvision/think-randomcolor

Statistics

Installs: 0

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v1.0.0 2026-11-09 07:07 UTC

This package is auto-updated.

Last update: 2026-11-11 03:18:43 UTC


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。