ryangjchandler / color
PHP包和应用程序的简单颜色对象。
Requires
- php: ^7.4|^8.0
Requires (Dev)
- ryangjchandler/puny: ^0.1.0
README
PHP包和应用程序的简单颜色对象。 🎨
安装
此包可以通过Composer安装
composer require ryangjchandler/color
用法
此包提供了一个单个的RyanChandler\Color\Color
对象。
创建颜色
要创建颜色,实例化一个新的RyanChandler\Color\Color
对象
use RyanChandler\Color\Color; $color = new Color(255, 255, 255);
构造函数接受三个可选参数。您颜色的红色、绿色和蓝色的十进制表示。
如果您更喜欢使用静态构造函数,可以使用Color::new()
方法,类似于Rust。
$color = Color::new(255, 255, 255);
从十六进制创建颜色
如果您希望使用十六进制表示创建颜色,可以使用Color::hex()
方法。
$color = Color::hex('#ffffff');
这将把您的十六进制表示转换为RGB等效值。
前面的#
不是强制的。它只会在提供的字符串以它开头时被移除。
值得注意的是,任何在十六进制值中指定的alpha值都会被移除,因为字符串被限制为长度为6。这可能在未来的版本中得到支持。
从HSL值创建颜色
您也可以使用色调、饱和度和亮度值,通过Color::hsl()
方法创建颜色。
$color = Color::hsl(0, 0, 100);
这将把您的HSL值转换为RGB等效值。
您还可以将alpha作为可选的第四个参数定义
Color::hsl(0, 0, 100, 0.5)
生成随机颜色
您可以使用Color::random()
方法生成随机颜色。
$random = Color::random();
访问红色、绿色和蓝色值
每个颜色值都可以通过Color
对象的公共属性访问。
$color = Color::new(255, 255, 255); $color->red; // 255 $color->green; // 255 $color->blue; // 255
获取十六进制表示
如果您希望获取颜色的十六进制等效值,可以使用Color::toHex()
方法。
Color::new(255, 255, 255)->toHex(); // #ffffff
获取HSL表示
如果您希望获取颜色的HSL等效值作为一个数组,可以使用Color::toHsl()
方法。
[$h, $s, $l] = Color::new(255, 255, 255)->toHsl(); // [0, 0, 100]
获取字符串表示
默认情况下,Color::toString()
方法返回一个类似元组的字符串。
Color::new(255, 255, 255)->toString(); // "(255, 255, 255)"
您还可以使用Color::toString()
方法来检索十六进制表示。
Color::new(255, 255, 255)->toString(true); // #ffffff
或者使用PHP的类型转换来获取字符串。
(string) Color::new(255, 255, 255); // "(255, 255, 255)"
获取数组
您可以使用Color::toArray()
方法获取所有三个颜色值的有序列表。
Color::new(255, 255, 255)->toArray(); // [255, 255, 255]
该数组不使用字符串键,因此您也可以将数组解包到单独的变量中。
[$r, $g, $b] = Color::new(255, 255, 255)->toArray();
找到两个颜色之间的距离
如果您需要计算两个颜色之间的距离,可以使用Color::distanceBetween()
方法。
$one = Color::new(0, 0, 220); $two = Color::new(255, 0, 220); Color::distanceBetween($one, $two); // 65_025
返回值是两个颜色之间的距离,平方。一般来说,这个数字比开方(结果)更容易阅读和识别。
使用现有的Color
如果您已经有了Color
对象,您也可以使用Color::distanceTo()
方法。
$one = Color::new(0, 0, 220); $two = Color::new(255, 0, 220); $one->distanceTo($two); // 65_025
值得注意的是,距离计算和
Color
对象不基于alpha颜色。这可能是未来将添加的功能。
比较颜色
您可以使用Color::bothEqual()
方法比较两种颜色。
$one = Color::rgb('#aaa'); $two = Color::rgb('#aaa'); $three = Color::rgb('#ccc'); Color::bothEqual($one, $two); // true Color::bothEqual($one, $three); // false
您也可以使用其中一个颜色的equals
方法来比较两种颜色。
$one = Color::rgb('#aaa'); $two = Color::rgb('#aaa'); $three = Color::rgb('#ccc'); $one->equals($two); // true $one->equals($three); // false