PHP包和应用程序的简单颜色对象。

v1.1.0 2021-03-19 10:06 UTC

This package is auto-updated.

Last update: 2024-09-19 18:13:15 UTC


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