intellexapps / color
2.0.0
2023-12-19 13:57 UTC
Requires
- php: >=7.4
Requires (Dev)
- phpstan/phpstan: ^1.4
- phpunit/phpunit: ^9.6
- squizlabs/php_codesniffer: ^3.8
This package is auto-updated.
Last update: 2024-09-19 15:30: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 格式,但您可以为特定需求创建您自己的 自定义解析器。
开箱即用的支持
- 从数组
[C, M, Y]
和[C, M, Y, K]
支持 CMYK - 从数组
[R, G, B]
和[R, G, B, A]
支持 RGB(A) - 从字符串支持 RGB(A)
RGB
ARGB
RRGGBB
AARRGGBB
#RGB
#ARGB
#RRGGBB
#AARRGGBB
- CSS
cmyk(c%, m%, y%)
和cmyk(c%, m%, y%, k%)
rgb(r, g, b)
和rgb(r, g, b, a)
自定义解析器
创建并注册一个新的解析器,该解析器将被包含在接下来的解析中
- 创建一个类并实现
AbstractColorParser
接口。 - 当实现方法
parse($input
)时- 如果输入无法解析 -> 抛出
ColorCannotBeParsed
- 如果输入可以解析则返回
Color
- 如果输入无法解析 -> 抛出
- 使用
ColorParser::registerParser(AbstractColorParser $parser)
注册解析器。 - 下次调用
ColorParser::parse()
时,您的解析器也将被考虑。
待办事项
- 支持 HSV。
- 通过在预定义列表中找到最相似的颜色来检测颜色名称。
鸣谢
脚本由 Intellex 团队编写。