fonil / coloreeze
支持Laravel集成的颜色处理和操作库
v1.0.3
2024-08-25 12:21 UTC
Requires
- php: ^8.3
Requires (Dev)
- phpstan/phpstan: ^1.4
- phpunit/phpunit: ^9
- squizlabs/php_codesniffer: ^3.5
README
coloreeze
处理颜色转换的PHP库
[目录]
摘要
Coloreeze是一个处理颜色转换的PHP库。
目前它支持以下颜色空间
- 十六进制
- 整数
- RGB(a)
- HSB/HSV
- HSL
- CMYK
- CIELab
- XYZ
特性
此外,此库包含一些有用的方法来
- 从颜色生成灰度版本
- 从颜色生成较暗的版本
- 从颜色生成较亮的版本
- 以创建渐变并测量颜色之间的CIE76距离。
安装
您可以通过composer安装此包
$ composer require alcidesrc/coloreeze
使用方法
Coloreeze
包包含独立的颜色类,它们都实现了Color
接口
- ColorCIELab
- ColorCMYK
- ColorFactory
- ColorHSB
- ColorHSL
- ColorHex
- ColorInt
- ColorRGBA
- ColorXYZ
颜色工厂
ColorFactory::fromString(string $input): Color
ColorFactory
类允许您从任何有效的输入字符串创建颜色实例。
如果输入字符串不是有效的颜色表示,它将抛出InvalidInput
异常。
ColorFactory::fromString('rgb(0,100,200)'); // Returns a `ColorRGBA` instance ColorFactory::fromString('#336699'); // Returns a `ColorHex` instance ColorFactory::fromString('unknown(1,2,3)'); // Throws an `InvalidInput` exception
颜色接口
__toString(): string
将颜色值转换为字符串
echo ColorRGBA::fromString('rgba(0,100,200,1.0)'); echo ColorHex::fromString('#336699'); 'rgba(0,100,200,1.0)' '#336699'
fromString(string $input): Color
解析输入字符串并相应地返回相关的Color
实现
$hex = ColorHex::fromString('#336699'); $rgba = ColorRGBA::fromString('rgba(0,100,200,1.0)'); ...
如果字符串格式不正确或不受支持的颜色,它将抛出InvalidInput
异常。
getValue(): mixed
返回Color
值。在单值颜色中,此方法返回一个原始值(int或string),但在组合颜色中返回一个包含颜色组件的数组
$int = ColorInt::fromString('int(100)'); var_dump($int->getValue()); int(100)
$rgba = ColorRGBA::fromString('rgba(0, 100, 200)'); var_dump($int->getValue()); array(3) { [0]=> int(0) [1]=> int(100) [2]=> int(200) }
$hex = ColorHex::fromString('#336699'); var_dump($int->getValue()); string(7) "#336699"
toCIELab(): ColorCIELab
将颜色转换为CIELab
$lab = ColorHex::fromString('#336699')->toCIELab();
toCMYK(): ColorCMYK
将颜色转换为CMYK
$cmyk = ColorHex::fromString('#336699')->toCMYK();
toHex(): ColorHex
将颜色转换为十六进制
$hex = ColorRGBA::fromString('rgba(100,200,200,1.0)')->toHex();
toHSB(): ColorHSB
将颜色转换为HSB/HSV
$hsb = ColorHex::fromString('#336699')->toHSB();
toHSL(): ColorHSL
将颜色转换为HSL
$hsl = ColorHex::fromString('#336699')->toHSL();
toInt(): ColorInt
将颜色转换为Int
$int = ColorHex::fromString('#336699')->toInt();
toRGBA(): ColorRGBA
$rgba = ColorInt::fromString('int(255)')->toRGBA();
toXYZ(): ColorXYZ
$rgba = ColorCMYK::fromString('cmyk(0,0,0,0)')->toXYZ();
toComplementary(): Color
$complementary = ColorRGBA::fromString('hsl(182,25,50)')->toComplementary();
toGreyscale(): Color
$greyscale = ColorInt::fromString('int(4278255615)')->toGreyscale();
adjustBrightness(int $steps): Color
$dark = ColorInt::fromString('int(4278255615)')->adjustBrightness(-10); $light = ColorInt::fromString('int(4278255615)')->adjustBrightness(10);
distanceCIE76(Color $color): float
$distance = ColorInt::fromString('int(4278255615)')->distanceCIE76(ColorInt::fromString('int(0)'));
测试
您可以通过composer运行测试套件
$ composer tests
单元测试
此库提供PHPUnit测试套件,包含1434个单元测试和2670个断言
Time: 00:00.426, Memory: 24.00 MB OK (1434 tests, 2670 assertions)
代码覆盖率
以下是代码覆盖率报告摘要
Code Coverage Report: 2022-07-22 06:32:15 Summary: Classes: 100.00% (11/11) Methods: 100.00% (135/135) Lines: 100.00% (475/475)
完整报告将在./reports/coverage文件夹中生成。
质量保证
静态分析器
您可以使用PHPStan检查此库
$ composer phpstan
此命令生成以下报告
> vendor/bin/phpstan analyse --level 9 --memory-limit 1G --ansi ./src ./tests
29/29 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
[OK] No errors
PHP Parallel Lint
您可以使用PHP Parallel Lint检查此库
$ composer linter
此命令生成以下报告
PHP 8.1.8 | 10 parallel jobs ............................. 29/29 (100 %) Checked 29 files in 0.1 seconds No syntax error found
PHP Insights
您可以使用PHP Insights来检查这个库。
$ composer phpinsights
此命令生成以下摘要:
> ./vendor/bin/phpinsights --fix 16/16 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100% ✨ Analysis Completed ! [2022-07-22 08:20:20] `/code` 99.0% 89.5% 94.1% 100 % Code Complexity Architecture Style Score scale: ◼ 1-49 ◼ 50-79 ◼ 80-100 [CODE] 99 pts within 494 lines Comments ....................................................... 5.1 % Classes ....................................................... 85.6 % Functions ...................................................... 0.0 % Globally ....................................................... 9.3 % [COMPLEXITY] 89.5 pts with average of 1.32 cyclomatic complexity [ARCHITECTURE] 94.1 pts within 13 files Classes ....................................................... 84.6 % Interfaces ..................................................... 7.7 % Globally ....................................................... 7.7 % Traits ......................................................... 0.0 % [MISC] 100 pts on coding style and 0 security issues encountered
安全漏洞
请参阅我们的安全策略,了解如何报告安全漏洞。
请勿公开披露与安全相关的问题
支持版本
只有最新主要版本会收到安全修复。
报告漏洞
如果您在此项目中发现安全漏洞,请在此处提交问题。所有安全漏洞都将得到及时处理。
许可证
MIT许可证(MIT)。有关更多信息,请参阅许可证文件。