fonil/coloreeze

支持Laravel集成的颜色处理和操作库

v1.0.3 2024-08-25 12:21 UTC

This package is auto-updated.

Last update: 2024-09-25 17:35:59 UTC


README

Integration Tests

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

此Composer脚本使用PHPUnit命令和PCOV支持运行,以生成代码覆盖率报告。

单元测试

此库提供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)。有关更多信息,请参阅许可证文件