netherphp / dye
简单的颜色格式化和操作。
Requires
- php: ^8.1
Requires (Dev)
- dealerdirect/phpcodesniffer-composer-installer: ^0.7.2
- netherphp/standards: >=0.2.10
- phpunit/phpunit: ^11.2
This package is auto-updated.
Last update: 2024-09-19 00:33:16 UTC
README
简单的颜色解析和操作库。轻量级,无依赖。能够自动解析常见的颜色字符串。无需使用不同类来处理各种支持的格式。
支持的字符串格式
- RGB十六进制字符串
#FF0000
- RGBA十六进制字符串
#FF0000FF
- RGB CSS 字符串
rgb(255, 0, 0)
- RGBA CSS 字符串
rgba(255, 0, 0, 1.0)
- HSL CSS 字符串
hsl(255, 0, 0)
- HSLA CSS 字符串
hsla(255, 0, 0, 1.0)
use Nether\Dye\Colour; $Red = new Colour('#FF0000'); // ...
要求
- PHP 8.1+
类
Nether\Dye\Colour
基本颜色对象,其中修改将混合到当前对象,并重新计算所有相关属性以保持当前状态。
Nether\Dye\ColourImmutable
与 Colour
具有相同的 API,但所有会修改当前数据集的方法都返回新对象,而保留原始对象不变。
工厂 API
Colour::From(string|RGBA|HSLA $Input): static
- 从适合已知格式的字符串中解析输入颜色。
Colour::FromIntRGB(int $RGB): static
- 从 24 位 RGB 整数解析输入颜色。
Colour::FromIntRGBA(int $RGB): static
- 从 32 位 RGBA 整数解析输入颜色。
Colour::FromRGB(int $R, int $G, int $B, int|float $A=255): static
- 按组件解析 RGB。
Colour::FromHSL(int $H, float $S, float $L, float $A=1.0): static
- 按组件解析 HSL。
操作 API
设置组件
$Colour->SetRGB(?int $R, ?int $G, ?int $B, ?int $A): self
- 设置指定的 RGB[A] 组件(不为 null)。
$Colour->SetHSL(?int $H, ?float $S, ?float $L, ?float $A): self
- 设置指定的 HSL[A] 组件(不为 null)。
Shooping Around.
$Colour->HueRotate(int $Degrees): self
- 按指定度数旋转颜色。
$Colour->HueShift(float $Percent): self
- 按指定百分比偏移颜色。
$Colour->Saturation(float $Mult): self
- 通过指定乘数修改颜色的饱和度。
$Colour->Saturate(float $Str): self
- 通过指定强度增加饱和度。
$Colour->Desaturate(float $Str): self
- 通过指定强度减少饱和度。
$Colour->Lightness(float $Mult): self
- 通过指定乘数修改颜色的亮度。
$Colour->Lighten(float $Str): self
- 通过指定强度增加亮度。
$Colour->Darken(float $Str): self
- 通过指定强度减少亮度。
$Colour->Mix(Colour $With, float $Str=0.5): self
- 以指定强度混合指定颜色。
查询 API
$Colour->IsBright(): bool
- 如果颜色会被认为是明亮的,则返回 TRUE。
$Colour->IsDark(): bool
- 如果颜色会被认为是暗的,则返回 TRUE。
打印 API
$Colour->ToHexRGB(): string
- 返回类似于
#FF0000
的十六进制编码字符串。
$Colour->ToHexRGBA(): string
- 返回类似于
#FF0000FF
的十六进制编码字符串。
$Colour->ToStyleRGB(): string
- 返回类似于
rgb(255, 0, 0)
的字符串。
$Colour->ToStyleRGBA(): string
- 返回类似于
rgb(255, 0, 0, 1.00)
的字符串。
$Colour->ToStyleHSL(): string
- 返回类似于
hsl(0, 1.00, 0.50)
的字符串。
$Colour->ToStyleHSLA(): string
- 返回一个类似于
hsl(0, 1.00, 0.50, 1.0)
的十六进制编码字符串
格式组件API
注意:所有操作都应通过根颜色对象的方法进行,以保持各种属性同步。SetRGB() 和 SetHSL() 方法接受可选的标签化参数和数组展开。
$Colour->RGB->ToArray(bool $Indexed=TRUE): array
- 返回一个索引数组或RGB数据列表。
$Colour->RGB->R(): int
- 返回RGB数据的红色分量。
$Colour->RGB->G(): int
- 返回RGB数据的绿色分量。
$Colour->RGB->B(): int
- 返回RGB数据的蓝色分量。
$Colour->RGB->A(): int
- 返回RGB数据的Alpha分量。
$Colour->HSL->ToArray(bool $Indexed=TRUE): array
- 返回一个索引数组或HSL数据列表。
$Colour->HSL->H(): int
- 返回HSL数据的色调分量。
$Colour->HSL->S(): float
- 返回HSL数据的饱和度分量。
$Colour->HSL->L(): float
- 返回HSL数据的亮度分量。
$Colour->HSL->A(): float
- 返回HSL数据的Alpha分量。
示例
实例化选择
use Nether\Dye\Colour; // long form $C1 = new Colour; $C1->Import('#aabbcc'); // condensed form $C2 = new Colour('#aabbcc'); // factory form $C3 = Colour::From('#aabbcc');
不可变对象
use Nether\Dye\ColourImmutable; $R = new ColourImmutable('#FF0000'); $G = $R->HueRotate(120); $B = $G->HueRotate(120); printf( 'R: %s, G: %s, B: %s%s', $R->ToHexRGB(), $G->ToHexRGB(), $B->ToHexRGB(), PHP_EOL ); // R: #FF0000, G: #00FF00, B: #0000FF
测试
$ phpunit
- 运行单元测试套件。
$ php -S localhost:8080 -t wwwtest
- 运行测试页面以查看一些内容。