spatie/color

一个小型库,用于处理颜色转换

资助包维护!
spatie

安装量: 5,594,727

依赖者: 25

建议者: 0

安全性: 0

星标: 345

关注者: 13

分支: 37

开放问题: 5

1.6.0 2024-09-20 14:00 UTC

This package is auto-updated.

Last update: 2024-09-20 14:00:49 UTC


README

一个小型库,用于处理颜色转换和比较

Latest Version on Packagist Software License Build Status Quality Score Total Downloads Tests

一个小型库,用于处理颜色转换和比较。目前,支持CSS名称、rgb、rgba、hex、hsl、hsla、CIELab和xyz颜色格式,以及CIE76、CIE94和CIEDE2000颜色比较算法。

$named = Named::fromString('peru'); // case-insensitive

echo $named->red(); // 205
echo $named->green(); // 133
echo $named->blue(); // 63

echo $named->toHex(); // #cd853f

$rgb = Rgb::fromString('rgb(55,155,255)');

echo $rgb->red(); // 55
echo $rgb->green(); // 155
echo $rgb->blue(); // 255

echo $rgb; // rgb(55,155,255)

$rgba = $rgb->toRgba(); // `Spatie\Color\Rgba`
$rgba->alpha(); // 1
echo $rgba; // rgba(55,155,255,1)

$hex = $rgb->toHex(); // `Spatie\Color\Hex`
$rgba->alpha(); // ff
echo $hex; // #379bff

$cmyk = $rgb->toCmyk(); // `Spatie\Color\Cmyk`
echo $cmyk; // cmyk(78,39,0,0)

$hsl = $rgb->toHsl(); // `Spatie\Color\Hsl`
echo $hsl; // hsl(210,100%,100%)

$hsb = $rgb->toHsb(); // `Spatie\Color\Hsb`
echo $hsb; // hsl(210,78.4%,100%)

$lab = $rgb->toCIELab();
echo $lab; // CIELab(62.91,5.34,-57.73)

$xyz = $rgb->toXyz();
echo $xyz; // xyz(31.3469,31.4749,99.0308)

$hex2 = Hex::fromString('#2d78c8');

$ratio = Contrast::ratio(Hex::fromString('#f0fff0'), Hex::fromString('#191970')); 
echo $ratio; // 15.0

$cie76_distance = Distance::CIE76($rgb, $hex2);
$cie76_distance = Distance::CIE76('rgba(55,155,255,1)', '#2d78c8'); // Outputs the same thing, Factory is built-in to all comparison functions
echo $cie76_distance; // 55.89468042667388

$cie94_distance = Distance::CIE94($rgb, $hex2);
echo $cie94_distance; // 13.49091942790753

$cie94_textiles_distance = Distance::CIE94($rgb, $hex2, 1); // Third parameter optionally sets the application type (0 = Graphic Arts [Default], 1 = Textiles)
echo $cie94_textiles_distance; // 7.0926538068477

$ciede2000_distance = Distance::CIEDE2000($rgb, $hex2);
echo $ciede2000_distance; // 12.711957696300898

支持我们

我们投入了大量资源来创建最佳开源包。您可以通过购买我们的付费产品之一来支持我们。

我们非常感谢您从家乡寄给我们明信片,说明您正在使用我们的哪些包。您可以在我们的联系页面上找到我们的地址。我们将所有收到的明信片发布在我们的虚拟明信片墙上

安装

您可以通过composer安装此包

composer require spatie/color

用法

Color包包含每个颜色格式的单独类,每个类都实现了一个Color接口。

有七个类实现了Color接口

  • CIELab
  • Cmyk
  • Hex
  • Hsb
  • Hsl
  • Hsla
  • Rgb
  • Rgba
  • Xyz

接口 Spatie\Color\Color

fromString(): Color

解析一个颜色字符串并返回一个Color实现,具体取决于输入字符串的格式。

Named::fromString('blue');
Hex::fromString('#000000');
Rgba::fromString('rgba(255, 255, 255, 1)');
Hsla::fromString('hsla(360, 100%, 100%, 1)');

如果字符串无法解析,则抛出InvalidColorValue异常。

RgbRgbaHslHsla字符串允许有空格。 rgb(0,0,0)rgb(0, 0, 0)一样有效。

red(): int|string

返回红色颜色通道的值。

Hex::fromString('#ff0000')->red(); // 'ff'
Rgb::fromString('rgb(255, 0, 0)')->red(); // 255

green(): int|string

返回绿色颜色通道的值。

Hex::fromString('#00ff00')->green(); // 'ff'
Rgb::fromString('rgb(0, 255, 0)')->green(); // 255

blue(): int|string

返回蓝色颜色通道的值。

Hex::fromString('#0000ff')->blue(); // 'ff'
Rgb::fromString('rgb(0, 0, 255)')->blue(); // 255

toCmyk(): Cmyk

将颜色转换为Cmyk颜色。

Rgb::fromString('rgb(0, 0, 255)')->toCmyk();
// `Cmyk` instance; 'cmyk(100,100,0,0)'

toHex(): Hex

将颜色转换为Hex颜色。

Rgb::fromString('rgb(0, 0, 255)')->toHex();
// `Hex` instance; '#0000ff'

当来自不支持透明度的颜色格式时,可以通过传递到$alpha参数来添加。

toHsb(): Hsb

将颜色转换为Hsb颜色。

Rgb::fromString('rgb(0, 0, 255)')->toHsb();
// `Hsl` instance; 'hsb(240, 100%, 100%)'

toHsl(): Hsl

将颜色转换为Hsl颜色。

Rgb::fromString('rgb(0, 0, 255)')->toHsl();
// `Hsl` instance; 'hsl(240, 100%, 50%)'

当来自支持透明度的颜色格式时,透明度将被简单地省略。

Rgba::fromString('rgba(0, 0, 255, .5)')->toHsl();
// `Hsl` instance; 'hsl(240, 100%, 50%)'

toHsla(float $alpha = 1): Hsla

将颜色转换为Hsla颜色。

Rgb::fromString('rgb(0, 0, 255)')->toHsla();
// `Hsla` instance; 'hsla(240, 100%, 50%, 1.0)'

当来自不支持透明度的颜色格式时,可以通过传递到$alpha参数来添加。

Rgb::fromString('rgb(0, 0, 255)')->toHsla(.5);
// `Hsla` instance; 'hsla(240, 100%, 50%, 0.5)'

toRgb(): Rgb

将颜色转换为Rgb颜色。

Hex::fromString('#0000ff')->toRgb();
// `Rgb` instance; 'rgb(0, 0, 255)'

当来自支持透明度的颜色格式时,透明度将被简单地省略。

Rgba::fromString('rgb(0, 0, 255, .5)')->toRgb();
// `Rgb` instance; 'rgb(0, 0, 255)'

toRgba(float $alpha = 1): Rgba

将颜色转换为Rgba颜色。

Rgb::fromString('rgb(0, 0, 255)')->toRgba();
// `Rgba` instance; 'rgba(0, 0, 255, 1)'

当来自不支持透明度的颜色格式时,可以通过传递到$alpha参数来添加。

Rgba::fromString('rgb(0, 0, 255)')->toRgba(.5);
// `Rgba` instance; 'rgba(0, 0, 255, .5)'

__toString(): string

将颜色转换为字符串。

(string) Rgb::fromString('rgb(0, 0, 255)'); // 'rgb(0,0,255)'
(string) Rgba::fromString('rgb(0, 0, 255, .5)'); // 'rgb(0,0,255,0.5)'
(string) Hex::fromString('#0000ff'); // '#0000ff'
(string) Hsl::fromString('hsl(240, 100%, 50%)'); // 'hsl(240, 100%, 50%)'
(string) Hsla::fromString('hsla(240, 100%, 50%, 1.0)'); // 'hsla(240, 100%, 50%, 1.0)'

Factory::fromString(): Color

使用Factory类,您可以从任何字符串创建颜色实例(它在内部进行有根据的猜测)。如果字符串在任何格式中都不是有效的颜色字符串,则抛出InvalidColorValue异常。

Factory::fromString('rgb(0, 0, 255)'); // `Rgb` instance
Factory::fromString('blue'); // `Named` instance
Factory::fromString('#0000ff'); // `Hex` instance
Factory::fromString('hsl(240, 100%, 50%)'); // `Hsl` instance
Factory::fromString('Hello world!'); // `InvalidColorValue` exception

变更日志

有关最近更改的更多信息,请参阅CHANGELOG

测试

$ composer test

贡献

有关详细信息,请参阅CONTRIBUTING

安全性

如果您发现了关于安全的错误,请通过电子邮件发送到 security@spatie.be 而不是使用问题跟踪器。

致谢

关于Spatie

Spatie 是一家位于比利时安特卫普的网页设计公司。您可以在我们的网站上找到我们所有开源项目的概述 在这里

许可证

MIT 许可证 (MIT)。有关更多信息,请参阅 许可证文件