项目作者: ozdemirburak

项目描述 :
PHP library for color manipulation and conversion.
高级语言: PHP
项目地址: git://github.com/ozdemirburak/iris.git
创建时间: 2017-05-30T15:21:05Z
项目社区:https://github.com/ozdemirburak/iris

开源协议:MIT License

下载


Iris - PHP Color Library

Latest Version on Packagist
Software License
Build Status
Total Downloads

PHP library for color manipulation and conversion.

For PHP 7.3 or PHP 7.4, use version ^2.5, and check the php-7 branch.

Install

Via Composer

  1. $ composer require ozdemirburak/iris

Usage

Hex

  1. use OzdemirBurak\Iris\Color\Hex;
  2. $hex = new Hex('#ff00ff'); // same as new Hex('fuchsia');
  3. echo $hex->red(); // ff
  4. echo $hex->green(); // 00
  5. echo $hex->blue(); // ff
  6. echo $hex->values(); // ['ff', '00', 'ff']
  7. $hexa = $hex->toHexa(); // \OzdemirBurak\Iris\Color\Hexa('ff00ffff')
  8. $hsl = $hex->toHsl(); // \OzdemirBurak\Iris\Color\Hsl('300,100,50')
  9. $hsla = $hex->toHsla(); // \OzdemirBurak\Iris\Color\Hsla('300,100,50,1.0')
  10. $hsv = $hex->toHsv(); // \OzdemirBurak\Iris\Color\Hsv('300,100,100')
  11. $rgb = $hex->toRgb(); // \OzdemirBurak\Iris\Color\Rgb('255,0,255')
  12. $rgba = $hex->toRgba(); // \OzdemirBurak\Iris\Color\Rgba('255,0,255,1.0')
  13. echo $hex; // #ff00ff

Hexa (hex with alpha value)

  1. use OzdemirBurak\Iris\Color\Hexa;
  2. $hexa = new Hexa('#ff00ff4c');
  3. echo $hexa->red(); // ff
  4. echo $hexa->green(); // 00
  5. echo $hexa->blue(); // ff
  6. echo $hexa->alpha(); // 0.3 - as a float for compatibility with the other conversions
  7. echo $hexa->values(); // ['ff', '00', 'ff', 0.3]
  8. $hsl = $hexa->toHsl(); // \OzdemirBurak\Iris\Color\Hsl('300,100,50')
  9. $hsla = $hexa->toHsla(); // \OzdemirBurak\Iris\Color\Hsla('300,100,50,0.3')
  10. $hsv = $hexa->toHsv(); // \OzdemirBurak\Iris\Color\Hsv('300,100,100')
  11. $rgb = $hexa->toRgb(); // \OzdemirBurak\Iris\Color\Rgb('255,0,255')
  12. $rgba = $hexa->toRgba(); // \OzdemirBurak\Iris\Color\Rgba('255,0,255,0.3')
  13. echo $hexa; // #ff00ff4c

HSL

  1. use OzdemirBurak\Iris\Color\Hsl;
  2. $hsl = new Hsl('hsl(300,100%,50%)'); // same as new Hsl('fuchsia');
  3. echo $hsl->hue(); // 300
  4. echo $hsl->saturation(); // 100
  5. echo $hsl->lightness(); // 50
  6. $values = $hsl->values(); // [300, '100%', '50%']
  7. $normalizedValues = $hsl->valuesInUnitInterval(); // [300/360, 100/100, 50/100]
  8. $hex = $hsl->toHex(); // \OzdemirBurak\Iris\Color\Hex('ff00ff')
  9. $hexa = $hsl->toHexa(); // \OzdemirBurak\Iris\Color\Hexa('ff00ffff')
  10. $hsv = $hsl->toHsv(); // \OzdemirBurak\Iris\Color\Hsv('300,100,100')
  11. $rgb = $hsl->toRgb(); // \OzdemirBurak\Iris\Color\Rgb('255,0,255')
  12. $rgba = $hsl->toRgba(); // \OzdemirBurak\Iris\Color\Rgba('255,0,255,1.0')
  13. echo $hsl; // hsl(300,100%,50%)

HSLA

  1. use OzdemirBurak\Iris\Color\Hsla;
  2. $hsla = new Hsla('hsla(150,100%,50%,0.3)');
  3. echo $hsla->hue(); // 150
  4. echo $hsla->saturation(); // 100
  5. echo $hsla->lightness(); // 50
  6. echo $hsla->alpha(); // 0.3
  7. $values = $hsla->values(); // [150, '100%', '50%', 0.3]
  8. $hex = $hsla->toHex(); // \OzdemirBurak\Iris\Color\Hex('b2ffd8')
  9. $hex = $hsla->toRgba(); // \OzdemirBurak\Iris\Color\Rgba('0,255,128,0.3')
  10. $hexa = $hsla->toHexa(); // \OzdemirBurak\Iris\Color\Hexa('ff00ff4c')
  11. echo $hsla; // hsla(150,100%,50%,0.3)

HSV

  1. use OzdemirBurak\Iris\Color\Hsv;
  2. $hsv = new Hsv('hsv(300,100%,100%)'); // same as new Hsv('fuchsia');
  3. echo $hsv->hue(); // 300
  4. echo $hsv->saturation(); // 100
  5. echo $hsv->value(); // 100
  6. $values = $hsv->values(); // [100, '100%', '100%']
  7. $normalizedValues = $hsv->valuesInUnitInterval(); // [300/360, 100/100, 100/100]
  8. $hex = $hsv->toHex(); // \OzdemirBurak\Iris\Color\Hex('ff00ff')
  9. $hexa = $hsv->toHexa(); // \OzdemirBurak\Iris\Color\Hexa('ff00ffff')
  10. $hsl = $hsv->toHsl(); // \OzdemirBurak\Iris\Color\Hsl('300,100,50')
  11. $hsla = $hsv->toHsla(); // \OzdemirBurak\Iris\Color\Hsla('300,100,50,1.0')
  12. $hsv = $hsv->toHsv(); // \OzdemirBurak\Iris\Color\Hsv('300,100,100')
  13. $rgb = $hsv->toRgb(); // \OzdemirBurak\Iris\Color\Rgb('255,0,255')
  14. $rgba = $hsv->toRgba(); // \OzdemirBurak\Iris\Color\Rgba('255,0,255,1.0')
  15. echo $hsv; // hsl(300,100%,100%)

RGB

  1. use OzdemirBurak\Iris\Color\Rgb;
  2. $rgb = new Rgb('rgb(255, 0, 255)'); // same as new Rgb('fuchsia');
  3. echo $rgb->red(); // 255
  4. echo $rgb->green(); // 0
  5. echo $rgb->blue(); // 255
  6. $values = $rgb->values(); // [255, 0, 255]
  7. $hex = $rgb->toHex(); // \OzdemirBurak\Iris\Color\Hex('ff00ff')
  8. $hexa = $rgb->toHexa(); // \OzdemirBurak\Iris\Color\Hexa('ff00ffff')
  9. $hsl = $rgb->toHsl(); // \OzdemirBurak\Iris\Color\Hsl('300,100,50')
  10. $hsla = $rgb->toHsla(); // \OzdemirBurak\Iris\Color\Hsla('300,100,50,1.0')
  11. $hsv = $rgb->toHsv(); // \OzdemirBurak\Iris\Color\Hsv('300,100,100')
  12. $rgb = $rgb->toRgb(); // \OzdemirBurak\Iris\Color\Rgb('255,0,255')
  13. $rgba = $rgb->toRgba(); // \OzdemirBurak\Iris\Color\Rgba('255,0,255,1.0')
  14. echo $rgb; // rgb(255,0,255)

RGBA

  1. use OzdemirBurak\Iris\Color\Rgba;
  2. $rgba = new Rgba('rgba(93,111,222,0.33)');
  3. echo $rgba->red(); // 93
  4. echo $rgba->green(); // 111
  5. echo $rgba->blue(); // 222
  6. echo $rgba->alpha(); // 0.33,
  7. $hex = $rgba->background((new Hex('ccc'))->toRgb())->toHex(); // \OzdemirBurak\Iris\Color\Hex('a7add1')
  8. $hexa = $rgba->toHexa(); // \OzdemirBurak\Iris\Color\Hexa('a7add154')
  9. echo $rgba; // rgba(127,127,127,0.5)

CMYK

  1. use OzdemirBurak\Iris\Color\Cmyk;
  2. $cmyk = new Cmyk('cmyk(0,100,0,0)');
  3. echo $cmyk->cyan(); // 0
  4. echo $cmyk->magenta(); // 100
  5. echo $cmyk->yellow(); // 0
  6. echo $cmyk->black(); // 0
  7. $values = $cmyk->values(); // [0, 100, 0, 0]
  8. $hex = $cmyk->toHex(); // OzdemirBurak\Iris\Color\Hex('ff00ff')
  9. $hexa = $cmyk->toHexa(); // OzdemirBurak\Iris\Color\Hexa('ff00ffff')
  10. $hsl = $cmyk->toHsl(); // OzdemirBurak\Iris\Color\Hsl('300,100,50')
  11. $hsla = $cmyk->toHsla(); // OzdemirBurak\Iris\Color\Hsla('300,100,50,1.0')
  12. $hsv = $cmyk->toHsv(); // OzdemirBurak\Iris\Color\Hsv('300,100,100')
  13. $rgb = $cmyk->toRgb(); // OzdemirBurak\Iris\Color\Rgb('255,0,255')
  14. $rgba = $cmyk->toRgba(); // OzdemirBurak\Iris\Color\Rgba('255,0,255,1.0')
  15. echo $cmyk; // cmyk(0,100,0,0)

Via Factory

If you do not know what the color string will be (for example, you’re getting it from a group of rows from a database),
then you can try using Factory to instantiate an appropriate color class:

  1. use OzdemirBurak\Iris\Color\Factory;
  2. $color = Factory::init('rgba(93,111,222,0.33)');
  3. echo $color->red(); // 93
  4. echo $color->green(); // 111
  5. echo $color->blue(); // 222
  6. echo $color->alpha(); // 0.33

Color Cloning

You can clone a color object to make a copy and modify it as needed.

  1. use OzdemirBurak\Iris\Color\Hex;
  2. $original = new Hex('#b2b2b2');
  3. $cloned = $original->clone()->toHexa()->alpha(0.5); // OzdemirBurak\Iris\Color\Hexa('#b2b2b27f')

Color Manipulation

Saturation

Saturate or desaturate by a percent.

  1. echo (new Hsl('90,80%,50%'))->saturate(20)->toHex(); // #80ff00
  2. echo (new Hsl('90, 80%, 50%'))->desaturate(20)->toRgb(); // rgb(128,204,51)
  3. echo (new Hex('#80cc33'))->grayscale(); // #808080, same as desaturate 100

Lightness

Lighten, darken or brighten by a percent.

  1. $hex = new Hex('#333');
  2. echo $hex->lighten(20); // #666666
  3. echo $hex->darken(20); // #000000
  4. echo $hex->brighten(20); // #666666

Spin

Spin by an angle [-360, 360]

  1. $hex = (new Hsl('10,90%,50'))->spin(30)->toHex();
  2. echo $hex; // #f2a60d

Mix

Mix by a percent.

  1. $hex = new Hex('#000');
  2. echo $hex->mix(new Hex('#fff'), 50); // #808080

Tint

Mix color with white by a percent.

  1. $hex = new Hex('#000');
  2. echo $hex->tint(50); // #808080

Shade

Mix color with black by a percent.

  1. $hex = new Hex('#FFF');
  2. echo $hex->shade(50); // #808080

Fade

Set the absolute opacity of a color by a percent.

  1. $hsl = new Hsl('90,90,50');
  2. echo $hsl->fade(10); // hsla(90,90%,50%,0.1)
  3. $rgb = new Rgb('128,242,13');
  4. echo $rgb->fade(10); // rgba(128,242,13,0.1)

FadeIn

Increase the opacity of a color by a percent.

  1. $hsla = new Hsla('90,90,50,0.3');
  2. echo $hsla->fadeIn(10); // hsla(90,90%,50%,0.4)
  3. $rgba = new Rgba('128,242,13,0.3');
  4. echo $rgba->fadeIn(10); // rgba(128,242,13,0.4)

FadeOut

Decrease the opacity of a color by a percent.

  1. $hsla = new Hsla('90,90,50,0.3');
  2. echo $hsla->fadeOut(10); // hsla(90,90%,50%,0.2)
  3. $rgba = new Rgba('128,242,13,0.3');
  4. echo $rgba->fadeOut(10); // rgba(128,242,13,0.2)

Is light or dark

Determine if color is dark or light color.

  1. $hex = new Hex('#000');
  2. echo $hex->isLight(); // false
  3. echo $hex->isDark(); // true

Change log

Please see CHANGELOG for more information what has changed recently.

Testing

  1. $ composer test

Contributing

Please see CONTRIBUTING for details.

Credits

License

The MIT License (MIT). Please see License File for more information.