spatie / color
一个小型库,用于处理颜色转换
Requires
- php: ^7.3|^8.0
Requires (Dev)
- pestphp/pest: ^1.22
- phpunit/phpunit: ^6.5||^9.0
README
一个小型库,用于处理颜色转换和比较
一个小型库,用于处理颜色转换和比较。目前,支持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
异常。
Rgb
、Rgba
、Hsl
和Hsla
字符串允许有空格。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)。有关更多信息,请参阅 许可证文件。