Giter Club home page Giter Club logo

phpcolors's Introduction

PHPColors Build Status

A series of methods that let you manipulate colors. Just incase you ever need different shades of one color on the fly.

Requirements

PHPColors requires PHP version 7.2.0 or greater.

Installation

Composer

Simply add mexitek/phpcolors to composer.json using dev-master.

composer require mexitek/phpcolors:dev-master

How it works

Instantiate an object of the color class with a hex color string $foo = new Color("336699"). That's it! Now, call the methods you need for different color variants.

Available Methods

  • darken( [$amount] ) : Allows you to obtain a darker shade of your color. Optionally you can decide to darken using a desired percentage.
  • lighten( [$amount] ) : Allows you to obtain a lighter shade of your color. Optionally you can decide to lighten using a desired percentage.
  • mix($hex, [$amount] ) : Allows you to mix another color to your color. Optionally you can decide to set the percent of second color or original color amount is ranged -100...0...100.
  • isLight( [$hex] ) : Determins whether your color (or the provide param) is considered a "light" color. Returns TRUE if color is light.
  • isDark( [$hex] ) : Determins whether your color (or the provide param) is considered a "dark" color. Returns TRUE if color is dark.
  • makeGradient( [$amount] ) : Returns an array with 2 indices light and dark, the initial color will either be selected for light or dark depending on its brightness, then the other color will be generated. The optional param allows for a static lighten or darkened amount.
  • complementary() : Returns the color "opposite" or complementary to your color.
  • getHex() : Returns the original hex color.
  • getHsl() : Returns HSL array for your color.
  • getRgb() : Returns RGB array for your color.

Auto lightens/darkens by 10% for sexily-subtle gradients

/**
 * Using The Class
 */

use Mexitek\PHPColors\Color;

// Initialize my color
$myBlue = new Color("#336699");

echo $myBlue->darken();
// 1a334d

echo $myBlue->lighten();
// 8cb3d9

echo $myBlue->isLight();
// false

echo $myBlue->isDark();
// true

echo $myBlue->complementary();
// 996633

echo $myBlue->getHex();
// 336699

print_r( $myBlue->getHsl() );
// array( "H"=> 210, "S"=> 0.5, "L"=>0.4 );

print_r( $myBlue->getRgb() );
// array( "R"=> 51, "G"=> 102, "B"=>153 );

print_r($myBlue->makeGradient());
// array( "light"=>"8cb3d9" ,"dark"=>"336699" )

Static Methods

  • hslToHex( $hsl ) : Convert a HSL array to a HEX string.
  • hexToHsl( $hex ) : Convert a HEX string into an HSL array.
  • hexToRgb( $hex ) : Convert a HEX string into an RGB array.
  • rgbToHex( $rgb ) : Convert an RGB array into a HEX string.
/**
 * On The Fly Custom Calculations
 */

use Mexitek\PHPColors\Color;

 // Convert my HEX
 $myBlue = Color::hexToHsl("#336699");

 // Get crazy with the HUE
 $myBlue["H"] = 295;

 // Gimme my new color!!
 echo Color::hslToHex($myBlue);
 // 913399

CSS Helpers

  • getCssGradient( [$amount] [, $vintageBrowsers] ) : Generates the CSS3 gradients for safari, chrome, opera, firefox and IE10. Optional percentage amount for lighter/darker shade. Optional boolean for older gradient CSS support.

Would like to add support to custom gradient stops

use Mexitek\PHPColors\Color;

// Initialize my color
$myBlue = new Color("#336699");

// Get CSS
echo $myBlue->getCssGradient();
/* - Actual output doesn't have comments and is single line

  // fallback background
  background: #336699;

  // IE Browsers
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#8cb3d9', endColorstr='#336699');

  // Safari 5.1+, Mobile Safari, Chrome 10+
  background-image: -webkit-linear-gradient(top, #8cb3d9, #336699);

  // Standards
  background-image: linear-gradient(to bottom, #8cb3d9, #336699);

*/

However, if you want to support the ancient browsers (which has negligible market share and almost died out), you can set the second parameter to TRUE. This will output:

use Mexitek\PHPColors\Color;
$myBlue = new Color("#336699");

// Get CSS
echo $myBlue->getCssGradient(10, TRUE);
/* - Actual output doesn't have comments and is single line

  background: #336699; // fallback background
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#8cb3d9', endColorstr='#336699'); // IE Browsers
  background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#8cb3d9), to(#336699)); // Safari 4+, Chrome 1-9
  background-image: -webkit-linear-gradient(top, #8cb3d9, #336699); // Safari 5.1+, Mobile Safari, Chrome 10+
  background-image: -moz-linear-gradient(top, #8cb3d9, #336699); // Firefox 3.6+
  background-image: -o-linear-gradient(top, #8cb3d9, #336699); // Opera 11.10+
  background-image: linear-gradient(to bottom, #8cb3d9, #336699); // Standards

*/

Github Contributors

  • mexitek
  • danielpataki
  • alexmglover
  • intuxicated
  • pborreli
  • curtisgibby
  • matthewpatterson
  • there4
  • alex-humphreys
  • zaher
  • primozcigler
  • thedavidmeister
  • tylercd100
  • Braunson

License

See LICENSE file or arlo.mit-license.org

phpcolors's People

Contributors

alex-humphreys avatar alexmglover avatar atmattpatt avatar bigjuevos avatar braunson avatar cedric-anne avatar chemix avatar curtisgibby avatar intuxicated avatar jleagle avatar m-e-h avatar mexitek avatar mikaykun avatar mikehayesuk avatar mikemunger avatar owenconti avatar pborreli avatar peter279k avatar primozcigler avatar sgtlambda avatar sqsinger1123 avatar strarsis avatar thedavidmeister avatar thekayani avatar tylercd100 avatar zaher avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

phpcolors's Issues

Incorrect conversion from HEX to RGB

A yellow color rgb(244, 231, 15) is not converted correctly to HEX value.
#f4e70f is the correct HEX value, but it is converted to #f4e7f instead.
What is noticeable is that again zeroes (0) are involved,
not at the beginning or end of the HEX value string but in between.

Composer version differs from this repository

I might be wrong, but I couldn't manage to get the code from composer that would match this repository. I tried "composer require mexitek/phpColors".

It's not much of an issue with the library, which is great, but I think someone should have a look at it.

License

Thanks for this project: elegant, lightweight, well documented. I would like to use it and here goes my two legal issues:

  1. MIT license says: "The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software." So maybe a license file should be included in source tree, as I understand this requirement right.
  2. You have written in you license: "Copyright © 2012 Arlo Carreon, http://arlocarreon.com". Recently I have noticed some pull request from other people. Depending on how much you value their contributions in terms of copyright law, you may add to your copyright notice something like: "and others" / "and contributors" / "and other contributors" to acknowledge their contribution. Or you may do this for potential future contributor if you are not sure. However, this will indicate that you are not only one copyright holder of this project, and relicensing the code will require approval of all copyright holder OR rewriting the code that is not yours.

I'm not a lawyer, but this is how I understand these things to the limits of my knowledge. Thank you for consideration.

Error converting from HSL to HEX - hslToHex()

I'm trying to convert a HSL to HEX:

var_dump(Color::hslToHex( array( 'H' => 50, 'S' => 60, 'L' => 70) ));
or
var_dump(Color::hslToHex( array( 'H' => 50, 'S' => '60%', 'L' => '70%' ) ));

Result:

string(38) "fffffffffff029e6fffffffffff5888210618e"

Any advise?
Jose Carlos Ramos Carmenates

rgbToHex has problems with RGB value '0'

It outputs single '0' in hex value. It should be a double zero '00'.

You need to replace
Line 197: return implode( '', $hex );
with: return sprintf("%02s%02s%02s", $hex[0], $hex[1], $hex[2]);

Cant get it working

Im a front end dev here...

I cant seem to get this working at all. I just wanted to change a hex value to hsl and I'm going down a rabbit hole.

$color = new Color($stripe_color);

Why wont this work? It needs to be a string right?

Method chaining

Thanks for this nice library! One thing that I constantly encounter is that I can't perform multiple actions (lighten, mix, ...) on one color but instead need to recreate Color objects for each step. I would suggest to return $this instead self::hslToHex()? This would break compatibility, so it would need an major version jump? Would go well though with @finwe's pull request #35.

v0.4 release?

As per the thread on #27 it can be an issue relying on dev-master to use this library.

Can we get a v0.4 tag on the most recent commit?

Error in importing Color.php

This is the error I am getting, using the Color.php

require_once DIR . '/../PHPColors/Color.php';
This is the only thing I am using, in my php file.


  | Parse error: syntax error, unexpected 'const' (T_CONST), expecting variable (T_VARIABLE) in /home/username/public_html/PHPColors/Color.php on line 38
 

Composer Support

Very handy lib! I would suggest adding this as a package into composer/packagist so others can easily add it to their projects and stay up to date.

http://packagist.org/

Version update

Hi there,

would you mind to release next version of this package please, so we can use a version constraint in our composer.json files.

Thank you very much, have a nice day.

Header (License and URL) in color.php

Hi, I copied this file into my project, but if someone look at it he will not know who write it or where is the real repo.
Would you please put a good header that include a license, author and url to this repo.

Thanks in advance.

Method to convert css color names to hex

Method to make colornames like "green" or "red" to hex colors. Something like this:

public static function name_to_hex($color_name)
    {
        // standard 147 HTML color names
        $colors  =  array(
            'aliceblue'=>'F0F8FF',
            'antiquewhite'=>'FAEBD7',
            'aqua'=>'00FFFF',
            'aquamarine'=>'7FFFD4',
            'azure'=>'F0FFFF',
            'beige'=>'F5F5DC',
            'bisque'=>'FFE4C4',
            'black'=>'000000',
            'blanchedalmond '=>'FFEBCD',
            'blue'=>'0000FF',
            'blueviolet'=>'8A2BE2',
            'brown'=>'A52A2A',
            'burlywood'=>'DEB887',
            'cadetblue'=>'5F9EA0',
            'chartreuse'=>'7FFF00',
            'chocolate'=>'D2691E',
            'coral'=>'FF7F50',
            'cornflowerblue'=>'6495ED',
            'cornsilk'=>'FFF8DC',
            'crimson'=>'DC143C',
            'cyan'=>'00FFFF',
            'darkblue'=>'00008B',
            'darkcyan'=>'008B8B',
            'darkgoldenrod'=>'B8860B',
            'darkgray'=>'A9A9A9',
            'darkgreen'=>'006400',
            'darkgrey'=>'A9A9A9',
            'darkkhaki'=>'BDB76B',
            'darkmagenta'=>'8B008B',
            'darkolivegreen'=>'556B2F',
            'darkorange'=>'FF8C00',
            'darkorchid'=>'9932CC',
            'darkred'=>'8B0000',
            'darksalmon'=>'E9967A',
            'darkseagreen'=>'8FBC8F',
            'darkslateblue'=>'483D8B',
            'darkslategray'=>'2F4F4F',
            'darkslategrey'=>'2F4F4F',
            'darkturquoise'=>'00CED1',
            'darkviolet'=>'9400D3',
            'deeppink'=>'FF1493',
            'deepskyblue'=>'00BFFF',
            'dimgray'=>'696969',
            'dimgrey'=>'696969',
            'dodgerblue'=>'1E90FF',
            'firebrick'=>'B22222',
            'floralwhite'=>'FFFAF0',
            'forestgreen'=>'228B22',
            'fuchsia'=>'FF00FF',
            'gainsboro'=>'DCDCDC',
            'ghostwhite'=>'F8F8FF',
            'gold'=>'FFD700',
            'goldenrod'=>'DAA520',
            'gray'=>'808080',
            'green'=>'008000',
            'greenyellow'=>'ADFF2F',
            'grey'=>'808080',
            'honeydew'=>'F0FFF0',
            'hotpink'=>'FF69B4',
            'indianred'=>'CD5C5C',
            'indigo'=>'4B0082',
            'ivory'=>'FFFFF0',
            'khaki'=>'F0E68C',
            'lavender'=>'E6E6FA',
            'lavenderblush'=>'FFF0F5',
            'lawngreen'=>'7CFC00',
            'lemonchiffon'=>'FFFACD',
            'lightblue'=>'ADD8E6',
            'lightcoral'=>'F08080',
            'lightcyan'=>'E0FFFF',
            'lightgoldenrodyellow'=>'FAFAD2',
            'lightgray'=>'D3D3D3',
            'lightgreen'=>'90EE90',
            'lightgrey'=>'D3D3D3',
            'lightpink'=>'FFB6C1',
            'lightsalmon'=>'FFA07A',
            'lightseagreen'=>'20B2AA',
            'lightskyblue'=>'87CEFA',
            'lightslategray'=>'778899',
            'lightslategrey'=>'778899',
            'lightsteelblue'=>'B0C4DE',
            'lightyellow'=>'FFFFE0',
            'lime'=>'00FF00',
            'limegreen'=>'32CD32',
            'linen'=>'FAF0E6',
            'magenta'=>'FF00FF',
            'maroon'=>'800000',
            'mediumaquamarine'=>'66CDAA',
            'mediumblue'=>'0000CD',
            'mediumorchid'=>'BA55D3',
            'mediumpurple'=>'9370D0',
            'mediumseagreen'=>'3CB371',
            'mediumslateblue'=>'7B68EE',
            'mediumspringgreen'=>'00FA9A',
            'mediumturquoise'=>'48D1CC',
            'mediumvioletred'=>'C71585',
            'midnightblue'=>'191970',
            'mintcream'=>'F5FFFA',
            'mistyrose'=>'FFE4E1',
            'moccasin'=>'FFE4B5',
            'navajowhite'=>'FFDEAD',
            'navy'=>'000080',
            'oldlace'=>'FDF5E6',
            'olive'=>'808000',
            'olivedrab'=>'6B8E23',
            'orange'=>'FFA500',
            'orangered'=>'FF4500',
            'orchid'=>'DA70D6',
            'palegoldenrod'=>'EEE8AA',
            'palegreen'=>'98FB98',
            'paleturquoise'=>'AFEEEE',
            'palevioletred'=>'DB7093',
            'papayawhip'=>'FFEFD5',
            'peachpuff'=>'FFDAB9',
            'peru'=>'CD853F',
            'pink'=>'FFC0CB',
            'plum'=>'DDA0DD',
            'powderblue'=>'B0E0E6',
            'purple'=>'800080',
            'red'=>'FF0000',
            'rosybrown'=>'BC8F8F',
            'royalblue'=>'4169E1',
            'saddlebrown'=>'8B4513',
            'salmon'=>'FA8072',
            'sandybrown'=>'F4A460',
            'seagreen'=>'2E8B57',
            'seashell'=>'FFF5EE',
            'sienna'=>'A0522D',
            'silver'=>'C0C0C0',
            'skyblue'=>'87CEEB',
            'slateblue'=>'6A5ACD',
            'slategray'=>'708090',
            'slategrey'=>'708090',
            'snow'=>'FFFAFA',
            'springgreen'=>'00FF7F',
            'steelblue'=>'4682B4',
            'tan'=>'D2B48C',
            'teal'=>'008080',
            'thistle'=>'D8BFD8',
            'tomato'=>'FF6347',
            'turquoise'=>'40E0D0',
            'violet'=>'EE82EE',
            'wheat'=>'F5DEB3',
            'white'=>'FFFFFF',
            'whitesmoke'=>'F5F5F5',
            'yellow'=>'FFFF00',
            'yellowgreen'=>'9ACD32');

        $color_name = strtolower($color_name);
        if (isset($colors[$color_name]))
        {
            return ('#' . $colors[$color_name]);
        }
        else
        {
            return ($color_name);
        }
    }    

Is there RGBA support?

Hi @mexitek,

Thanks for this handy class. I was wondering if this class also supports rgba format and some functions for manpulating it. e.g. changeOpacity(). It would be great if these features could be added into your class.

Thanks!

getRgb()

Hi and thanks for incredible class!
Is getRgb() method works as documented?

Thank you.

Support for autoloading

Could you please add support for PSR autoloading? Would make it much easier to quickly use the class when working in a framework such as Laravel.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.