intellex/color

2.0.0 2023-12-19 13:57 UTC

This package is auto-updated.

Last update: 2024-09-19 15:42:50 UTC


README

  • 支持 RGB(A)CMY(K),转换非常简单。
  • 使用 可用的设置器 修改初始化的颜色。
  • 输出任何格式的颜色,包括所有的 CSS 格式。
  • 能够解析任何 标准CSS 中的颜色。
  • 通过您自己的 自定义解析器 扩展解析。
  • 预定义的 142 个 命名网络颜色列表。
  • 额外的 第三方 脚本。

预定义颜色

Predefined\RGBA 类中定义的所有 142 个标准 HTML 颜色列表

$chocolateColor = RGBA::Chocolate();
$mistyRoseColor = RGBA::MistyRose();
$navyColor = RGBA::Navy();

一些示例

从十六进制到 CSS

$color = ColorParser::parse('#781190');
echo $color->toCSS();

从 CSS 到 GD 颜色

$color = ColorParser::parse('rgb(80, 138, 99);');
$image = imageCreateTrueColor(200, 200);
$gdColor = $color->getRGBA()->toImageColorIdentifier($image)

从 CMYK 到 RGBA

$color = ColorParser::parse('cmyk(20%, 40%, 60%, 20%');
echo $color->getRGBA()->toHexString();

转换

初始化颜色时,颜色将是 RGBA 或 CMYK。这可以通过手动操作或解析字符串来完成。

请注意,一些参数(例如 RGBA 中的 alpha 通道)在转换过程中将被忽略。

任何颜色都可以转换为另一种颜色

$rgba = new RGBA(190, 11, 32, 0.65);
$cmyk = $rgba->getCMYK(); 

带有 解析器 的示例。

$rgba = ColorParser::parse($input)->getRGBA(); 

输出

RGBA 可用的选项

$rgba->toImageColorIdentifier($image);
$rgba->toHexString($includeAlpha, $includeHashTag, $uppercase);
$rgba->toCSS();
$rgba->getCMYK();

CMYK 可用的选项

$cmyk->toCSS;
$cmyk->getRGBA;

解析颜色

使用 ColorParser::parse($input),它将尝试每个注册的解析器。

如果没有解析器能够处理它,将抛出 ColorCannotBeParsed

默认解析器支持大多数(如果不是所有)RGBA 和 CMYK 格式,但您可以为特定的需要创建 自定义解析器

开箱即用支持

  • CMYK 来自数组 [C, M, Y][C, M, Y, K]
  • RGB(A) 来自数组 [R, G, B][R, G, B, A]
  • RGB(A) 来自字符串
    • RGB
    • ARGB
    • RRGGBB
    • AARRGGBB
    • #RGB
    • #ARGB
    • #RRGGBB
    • #AARRGGBB
  • CSS
    • cmyk(c%, m%, y%)cmyk(c%, m%, y%, k%)
    • rgb(r, b, g)rgb(r, b, g, a)

自定义解析器

创建并注册一个新的解析器,该解析器将被包含在下次解析中

  1. 创建一个类并实现 AbstractColorParser 接口。
  2. 实现方法 parse($input) 时
    • 如果输入无法解析 -> 抛出 ColorCannotBeParsed
    • 如果输入可以解析,返回 Color
  3. 使用 ColorParser::registerParser(AbstractColorParser $parser) 注册解析器。
  4. 下次调用 ColorParser::parse() 时,您的解析器也将被考虑。

待办事项

  1. 支持 HSV。
  2. 通过在预定义列表中找到最相似的颜色来检测颜色名称。

致谢

脚本由 Intellex 团队编写。