Skip to content

Instantly share code, notes, and snippets.

@bgauthier
Forked from stephenharris/color_luminance.php
Created January 26, 2017 05:53

Revisions

  1. @stephenharris stephenharris created this gist May 7, 2013.
    27 changes: 27 additions & 0 deletions color_luminance.php
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,27 @@
    <?php
    /**
    * Lightens/darkens a given colour (hex format), returning the altered colour in hex format.7
    * @param str $hex Colour as hexadecimal (with or without hash);
    * @percent float $percent Decimal ( 0.2 = lighten by 20%(), -0.4 = darken by 40%() )
    * @return str Lightened/Darkend colour as hexadecimal (with hash);
    */
    function color_luminance( $hex, $percent ) {

    // validate hex string

    $hex = preg_replace( '/[^0-9a-f]/i', '', $hex );
    $new_hex = '#';

    if ( strlen( $hex ) < 6 ) {
    $hex = $hex[0] + $hex[0] + $hex[1] + $hex[1] + $hex[2] + $hex[2];
    }

    // convert to decimal and change luminosity
    for ($i = 0; $i < 3; $i++) {
    $dec = hexdec( substr( $hex, $i*2, 2 ) );
    $dec = min( max( 0, $dec + $dec * $percent ), 255 );
    $new_hex .= str_pad( dechex( $dec ) , 2, 0, STR_PAD_LEFT );
    }

    return $new_hex;
    }