{"id":16972047,"url":"https://github.com/ozdemirburak/iris","last_synced_at":"2025-12-02T22:05:13.801Z","repository":{"id":42020152,"uuid":"92846804","full_name":"ozdemirburak/iris","owner":"ozdemirburak","description":"PHP library for color manipulation and conversion.","archived":false,"fork":false,"pushed_at":"2024-01-27T10:40:19.000Z","size":133,"stargazers_count":112,"open_issues_count":3,"forks_count":20,"subscribers_count":5,"default_branch":"master","last_synced_at":"2024-10-15T00:56:45.661Z","etag":null,"topics":["color","hacktoberfest","hex","hsl","hsla","hsv","rgb","rgba"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ozdemirburak.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-05-30T15:21:05.000Z","updated_at":"2024-07-12T13:34:55.000Z","dependencies_parsed_at":"2024-01-27T12:31:32.561Z","dependency_job_id":"c67e9eaa-60b3-492d-8679-2092e94e41dc","html_url":"https://github.com/ozdemirburak/iris","commit_stats":{"total_commits":57,"total_committers":15,"mean_commits":3.8,"dds":0.631578947368421,"last_synced_commit":"909650aa1ba67de4560a459a261c830b8050bf56"},"previous_names":[],"tags_count":16,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ozdemirburak%2Firis","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ozdemirburak%2Firis/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ozdemirburak%2Firis/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ozdemirburak%2Firis/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ozdemirburak","download_url":"https://codeload.github.com/ozdemirburak/iris/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247234921,"owners_count":20905854,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["color","hacktoberfest","hex","hsl","hsla","hsv","rgb","rgba"],"created_at":"2024-10-14T00:56:50.635Z","updated_at":"2025-12-02T22:05:13.794Z","avatar_url":"https://github.com/ozdemirburak.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Iris - PHP Color Library\n\n[![Latest Version on Packagist][ico-version]][link-packagist]\n[![Software License][ico-license]](LICENSE.md)\n[![Total Downloads][ico-downloads]][link-downloads]\n\nPHP library for color manipulation and conversion. Requires PHP 8.1+ and supports \nHex, Hexa, RGB, RGBA, HSL, HSLA, HSV, CMYK, and OKLCH color formats.\n\n## Install\n\n``` bash\n$ composer require ozdemirburak/iris\n```\n\n## Usage\n\n### Hex\n\n``` php\nuse OzdemirBurak\\Iris\\Color\\Hex;\n\n$hex = new Hex('#ff00ff'); // same as new Hex('fuchsia');\necho $hex-\u003ered(); // ff\necho $hex-\u003egreen(); // 00\necho $hex-\u003eblue(); // ff\necho $hex-\u003evalues(); // ['ff', '00', 'ff']\n$hexa = $hex-\u003etoHexa(); // \\OzdemirBurak\\Iris\\Color\\Hexa('ff00ffff')\n$hsl = $hex-\u003etoHsl(); // \\OzdemirBurak\\Iris\\Color\\Hsl('300,100,50')\n$hsla = $hex-\u003etoHsla(); // \\OzdemirBurak\\Iris\\Color\\Hsla('300,100,50,1.0')\n$hsv = $hex-\u003etoHsv(); // \\OzdemirBurak\\Iris\\Color\\Hsv('300,100,100')\n$rgb = $hex-\u003etoRgb(); // \\OzdemirBurak\\Iris\\Color\\Rgb('255,0,255')\n$rgba = $hex-\u003etoRgba(); // \\OzdemirBurak\\Iris\\Color\\Rgba('255,0,255,1.0')\n$oklch = $hex-\u003etoOklch(); // \\OzdemirBurak\\Iris\\Color\\Oklch('70.17,0.3225,328.36')\necho $hex; // #ff00ff\n```\n\n### Hexa (hex with alpha value)\n\n``` php\nuse OzdemirBurak\\Iris\\Color\\Hexa;\n\n$hexa = new Hexa('#ff00ff4c');\necho $hexa-\u003ered(); // ff\necho $hexa-\u003egreen(); // 00\necho $hexa-\u003eblue(); // ff\necho $hexa-\u003ealpha(); // 0.3 - as a float for compatibility with the other conversions\necho $hexa-\u003evalues(); // ['ff', '00', 'ff', 0.3]\n$hsl = $hexa-\u003etoHsl(); // \\OzdemirBurak\\Iris\\Color\\Hsl('300,100,50')\n$hsla = $hexa-\u003etoHsla(); // \\OzdemirBurak\\Iris\\Color\\Hsla('300,100,50,0.3')\n$hsv = $hexa-\u003etoHsv(); // \\OzdemirBurak\\Iris\\Color\\Hsv('300,100,100')\n$rgb = $hexa-\u003etoRgb(); // \\OzdemirBurak\\Iris\\Color\\Rgb('255,0,255')\n$rgba = $hexa-\u003etoRgba(); // \\OzdemirBurak\\Iris\\Color\\Rgba('255,0,255,0.3')\necho $hexa; // #ff00ff4c\n```\n\n### HSL\n\n``` php\nuse OzdemirBurak\\Iris\\Color\\Hsl;\n\n$hsl = new Hsl('hsl(300,100%,50%)'); // same as new Hsl('fuchsia');\necho $hsl-\u003ehue(); // 300\necho $hsl-\u003esaturation(); // 100\necho $hsl-\u003elightness(); // 50\n$values = $hsl-\u003evalues(); // [300, '100%', '50%']\n$normalizedValues = $hsl-\u003evaluesInUnitInterval(); // [300/360, 100/100, 50/100]\n$hex = $hsl-\u003etoHex(); // \\OzdemirBurak\\Iris\\Color\\Hex('ff00ff')\n$hexa = $hsl-\u003etoHexa(); // \\OzdemirBurak\\Iris\\Color\\Hexa('ff00ffff')\n$hsv = $hsl-\u003etoHsv(); // \\OzdemirBurak\\Iris\\Color\\Hsv('300,100,100')\n$rgb = $hsl-\u003etoRgb(); // \\OzdemirBurak\\Iris\\Color\\Rgb('255,0,255')\n$rgba = $hsl-\u003etoRgba(); // \\OzdemirBurak\\Iris\\Color\\Rgba('255,0,255,1.0')\necho $hsl; // hsl(300,100%,50%)\n```\n\n### HSLA\n\n``` php\nuse OzdemirBurak\\Iris\\Color\\Hsla;\n\n$hsla = new Hsla('hsla(150,100%,50%,0.3)');\necho $hsla-\u003ehue(); // 150\necho $hsla-\u003esaturation(); // 100\necho $hsla-\u003elightness(); // 50\necho $hsla-\u003ealpha(); // 0.3\n$values = $hsla-\u003evalues(); // [150, '100%', '50%', 0.3]\n$hex = $hsla-\u003etoHex(); // \\OzdemirBurak\\Iris\\Color\\Hex('b2ffd8')\n$rgba = $hsla-\u003etoRgba(); // \\OzdemirBurak\\Iris\\Color\\Rgba('0,255,128,0.3')\n$hexa = $hsla-\u003etoHexa(); // \\OzdemirBurak\\Iris\\Color\\Hexa('00ff804d')\necho $hsla; // hsla(150,100%,50%,0.3)\n```\n\n### HSV\n\n``` php\nuse OzdemirBurak\\Iris\\Color\\Hsv;\n\n$hsv = new Hsv('hsv(300,100%,100%)'); // same as new Hsv('fuchsia');\necho $hsv-\u003ehue(); // 300\necho $hsv-\u003esaturation(); // 100\necho $hsv-\u003evalue(); // 100\n$values = $hsv-\u003evalues(); // [300, '100%', '100%']\n$normalizedValues = $hsv-\u003evaluesInUnitInterval(); // [300/360, 100/100, 100/100]\n$hex = $hsv-\u003etoHex(); // \\OzdemirBurak\\Iris\\Color\\Hex('ff00ff')\n$hexa = $hsv-\u003etoHexa(); // \\OzdemirBurak\\Iris\\Color\\Hexa('ff00ffff')\n$hsl = $hsv-\u003etoHsl(); // \\OzdemirBurak\\Iris\\Color\\Hsl('300,100,50')\n$hsla = $hsv-\u003etoHsla(); // \\OzdemirBurak\\Iris\\Color\\Hsla('300,100,50,1.0')\n$hsv = $hsv-\u003etoHsv(); // \\OzdemirBurak\\Iris\\Color\\Hsv('300,100,100')\n$rgb = $hsv-\u003etoRgb(); // \\OzdemirBurak\\Iris\\Color\\Rgb('255,0,255')\n$rgba = $hsv-\u003etoRgba(); // \\OzdemirBurak\\Iris\\Color\\Rgba('255,0,255,1.0')\necho $hsv; // hsv(300,100%,100%)\n```\n\n### RGB\n\n``` php\nuse OzdemirBurak\\Iris\\Color\\Rgb;\n\n$rgb = new Rgb('rgb(255, 0, 255)'); // same as new Rgb('fuchsia');\n\necho $rgb-\u003ered(); // 255\necho $rgb-\u003egreen(); // 0\necho $rgb-\u003eblue(); // 255\n$values = $rgb-\u003evalues(); // [255, 0, 255]\n$hex = $rgb-\u003etoHex(); // \\OzdemirBurak\\Iris\\Color\\Hex('ff00ff')\n$hexa = $rgb-\u003etoHexa(); // \\OzdemirBurak\\Iris\\Color\\Hexa('ff00ffff')\n$hsl = $rgb-\u003etoHsl(); // \\OzdemirBurak\\Iris\\Color\\Hsl('300,100,50')\n$hsla = $rgb-\u003etoHsla(); // \\OzdemirBurak\\Iris\\Color\\Hsla('300,100,50,1.0')\n$hsv = $rgb-\u003etoHsv(); // \\OzdemirBurak\\Iris\\Color\\Hsv('300,100,100')\n$rgb = $rgb-\u003etoRgb(); // \\OzdemirBurak\\Iris\\Color\\Rgb('255,0,255')\n$rgba = $rgb-\u003etoRgba(); // \\OzdemirBurak\\Iris\\Color\\Rgba('255,0,255,1.0')\necho $rgb; // rgb(255,0,255)\n```\n\n### RGBA\n\n``` php\nuse OzdemirBurak\\Iris\\Color\\Rgba;\n\n$rgba = new Rgba('rgba(93,111,222,0.33)');\n\necho $rgba-\u003ered(); // 93\necho $rgba-\u003egreen(); // 111\necho $rgba-\u003eblue(); // 222\necho $rgba-\u003ealpha(); // 0.33\n$hex = $rgba-\u003ebackground((new Hex('ccc'))-\u003etoRgb())-\u003etoHex(); // \\OzdemirBurak\\Iris\\Color\\Hex('a7add1')\n$hexa = $rgba-\u003etoHexa(); // \\OzdemirBurak\\Iris\\Color\\Hexa('5d6fde54') - preserves original RGB\necho $rgba; // rgba(93,111,222,0.33)\n```\n\n### CMYK\n```php\nuse OzdemirBurak\\Iris\\Color\\Cmyk;\n\n$cmyk = new Cmyk('cmyk(0,100,0,0)');\n\necho $cmyk-\u003ecyan(); // 0\necho $cmyk-\u003emagenta(); // 100\necho $cmyk-\u003eyellow(); // 0\necho $cmyk-\u003eblack(); // 0\n\n$values = $cmyk-\u003evalues(); // [0, 100, 0, 0]\n$hex = $cmyk-\u003etoHex(); // OzdemirBurak\\Iris\\Color\\Hex('ff00ff')\n$hexa = $cmyk-\u003etoHexa(); // OzdemirBurak\\Iris\\Color\\Hexa('ff00ffff')\n$hsl = $cmyk-\u003etoHsl(); // OzdemirBurak\\Iris\\Color\\Hsl('300,100,50')\n$hsla = $cmyk-\u003etoHsla(); // OzdemirBurak\\Iris\\Color\\Hsla('300,100,50,1.0')\n$hsv = $cmyk-\u003etoHsv(); // OzdemirBurak\\Iris\\Color\\Hsv('300,100,100')\n$rgb = $cmyk-\u003etoRgb(); // OzdemirBurak\\Iris\\Color\\Rgb('255,0,255')\n$rgba = $cmyk-\u003etoRgba(); // OzdemirBurak\\Iris\\Color\\Rgba('255,0,255,1.0')\n\necho $cmyk; // cmyk(0,100,0,0)\n```\n\n### OKLCH\n\n```php\nuse OzdemirBurak\\Iris\\Color\\Oklch;\nuse OzdemirBurak\\Iris\\Color\\Hex;\n\n// Comma-separated syntax\n$oklch = new Oklch('oklch(70%, 0.15, 150)');\n\n// Space-separated syntax (CSS Color Level 4)\n$oklch = new Oklch('oklch(40.1% 0.123 21.57)');\n$oklch = new Oklch('oklch(59.69% 0.156 49.77)');\n\necho $oklch-\u003elightness(); // 59.69\necho $oklch-\u003echroma(); // 0.156\necho $oklch-\u003ehue(); // 49.77\n\n$values = $oklch-\u003evalues(); // [59.69, 0.156, 49.77]\n$hex = $oklch-\u003etoHex(); // OzdemirBurak\\Iris\\Color\\Hex\n$rgb = $oklch-\u003etoRgb(); // OzdemirBurak\\Iris\\Color\\Rgb\n$hsl = $oklch-\u003etoHsl(); // OzdemirBurak\\Iris\\Color\\Hsl\n\necho $oklch; // oklch(59.69% 0.156 49.77)\n\n// Convert from other formats to OKLCH\n$hex = new Hex('#ff0000');\n$oklch = $hex-\u003etoOklch();\necho $oklch; // oklch(62.8% 0.2577 29.23)\n```\n\n**Note:** The following are not supported:\n\n- Alpha values (e.g., `oklch(59.69% 0.156 49.77 / .5)`) - alpha is ignored\n- Relative color syntax with `from` keyword (e.g., `oklch(from green l c h)`)\n\n### Via Factory\n\nIf you do not know what the color string will be (for example, you're getting it from a group of rows from a database),\nthen you can try using Factory to instantiate an appropriate color class:\n\n``` php\nuse OzdemirBurak\\Iris\\Color\\Factory;\n\n$color = Factory::init('rgba(93,111,222,0.33)');\necho $color-\u003ered(); // 93\necho $color-\u003egreen(); // 111\necho $color-\u003eblue(); // 222\necho $color-\u003ealpha(); // 0.33\n```\n\n### Color Cloning\n\nYou can clone a color object to make a copy and modify it as needed.\n\n```php\nuse OzdemirBurak\\Iris\\Color\\Hex;\n\n$original = new Hex('#b2b2b2');\n$cloned = $original-\u003eclone()-\u003etoHexa()-\u003ealpha(0.5); // OzdemirBurak\\Iris\\Color\\Hexa('#b2b2b280')\n```\n\n### Color Manipulation\n\n#### Saturation\n\nSaturate or desaturate by a percent.\n\n``` php\necho (new Hsl('90,80%,50%'))-\u003esaturate(20)-\u003etoHex(); // #80ff00\necho (new Hsl('90, 80%, 50%'))-\u003edesaturate(20)-\u003etoRgb(); // rgb(128,204,51)\necho (new Hex('#80cc33'))-\u003egrayscale(); // #808080, same as desaturate 100\n```\n\n#### Lightness\n\nLighten, darken or brighten by a percent.\n\n``` php\n$hex = new Hex('#333');\necho $hex-\u003elighten(20); // #666666\necho $hex-\u003edarken(20); // #000000\necho $hex-\u003ebrighten(20); // #666666\n```\n\n#### Spin\n\nSpin by an angle [-360, 360]\n\n``` php\n$hex = (new Hsl('10,90%,50'))-\u003espin(30)-\u003etoHex();\necho $hex; // #f2a60d\n```\n\n#### Mix\n\nMix by a percent.\n\n``` php\n$hex = new Hex('#000');\necho $hex-\u003emix(new Hex('#fff'), 50); // #808080\n```\n\n#### Tint\n\nMix color with white by a percent.\n\n``` php\n$hex = new Hex('#000');\necho $hex-\u003etint(50); // #808080\n```\n\n#### Shade\n\nMix color with black by a percent.\n\n``` php\n$hex = new Hex('#FFF');\necho $hex-\u003eshade(50); // #808080\n```\n\n#### Fade\n\nSet the absolute opacity of a color by a percent.\n\n``` php\n$hsl = new Hsl('90,90,50');\necho $hsl-\u003efade(10); // hsla(90,90%,50%,0.1)\n\n$rgb = new Rgb('128,242,13');\necho $rgb-\u003efade(10); // rgba(128,242,13,0.1)\n```\n\n#### FadeIn\n\nIncrease the opacity of a color by a percent.\n\n``` php\n$hsla = new Hsla('90,90,50,0.3');\necho $hsla-\u003efadeIn(10); // hsla(90,90%,50%,0.4)\n\n$rgba = new Rgba('128,242,13,0.3');\necho $rgba-\u003efadeIn(10); // rgba(128,242,13,0.4)\n```\n\n#### FadeOut\n\nDecrease the opacity of a color by a percent.\n\n``` php\n$hsla = new Hsla('90,90,50,0.3');\necho $hsla-\u003efadeOut(10); // hsla(90,90%,50%,0.2)\n\n$rgba = new Rgba('128,242,13,0.3');\necho $rgba-\u003efadeOut(10); // rgba(128,242,13,0.2)\n```\n\n#### Is light or dark\n\nDetermine if color is dark or light color.\n\n``` php\n$hex = new Hex('#000');\necho $hex-\u003eisLight(); // false\necho $hex-\u003eisDark(); // true\n```\n\n## Change log\n\nPlease see [CHANGELOG](CHANGELOG.md) for more information what has changed recently.\n\n## Testing\n\n``` bash\n$ composer test\n```\n\n## Contributing\n\nPlease see [CONTRIBUTING](CONTRIBUTING.md) for details.\n\n## Credits\n\n- [Burak Özdemir][link-author]\n- [All Contributors][link-contributors]\n\n## License\n\nThe MIT License (MIT). Please see [License File](LICENSE.md) for more information.\n\n[ico-version]: https://img.shields.io/packagist/v/ozdemirburak/iris.svg?style=flat-square\n[ico-license]: https://img.shields.io/badge/license-MIT-brightgreen.svg?style=flat-square\n[ico-downloads]: https://img.shields.io/packagist/dt/ozdemirburak/iris.svg?style=flat-square\n\n[link-packagist]: https://packagist.org/packages/ozdemirburak/iris\n[link-downloads]: https://packagist.org/packages/ozdemirburak/iris\n[link-author]: https://github.com/ozdemirburak\n[link-contributors]: ../../contributors\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fozdemirburak%2Firis","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fozdemirburak%2Firis","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fozdemirburak%2Firis/lists"}