Posts Tagged with gb

Displaying 1-3 of 3 results.
Resolved: PHP filesize MB/KB conversion
posted by admin on June 18, 2016
How can I convert the output of PHP's filesize() function to a nice format with MegaBytes, KiloBytes etc?

like:
  • if the size is less than 1 MB, show the size in KB
  • if it's between 1 MB - 1 GB show it in MB
  • [*] if it's larger - in GBRead more
    Wiki: PHP Dominant Colour Function with GD Librarywiki
    posted by admin on April 13, 2016
    Someone asked if it was possible to find the dominant colour (the more frequent colour, in %) of an image.

    So I read about the GD PHP Library, which enables image support. I found the interesting function imageColorAt() which the colour of a specific pixel. Hence, my function consists of resizing to a known size, 100 x 100, then looping into each pixel, storing it’s colour into an array, then sorting the array to find the more frequent key.

    Here’s the result :

    function getDominantColour($image, $type='jpeg') // $type can be gif, jpeg or png
    {
    // This function needs GD Library enabled

    eval('$source = imagecreatefrom' . $type . '("' . $image . '");'); // we load the source image
    $source_x = imagesx($source); // source's X
    $source_y = imagesy($source); // source's Y
    $resized_x = 100; // resized image's X
    $resized_y = 100; // resized image's Y
    $resized= imagecreatetruecolor($resized_x, $resized_y); // we create a blank 100 x 100 image
    imagecopyresampled($resized, $source, 0, 0, 0, 0, $resized_x, $resized_y, $source_x, $source_y); // We then copy and resized the source image into the blank image

    // Required vars declaration
    $colours = array();
    $rgb = '';
    $index = array();
    for ($x=0; $x<100; $x++) // We loop into the pixels X
    {
    for ($y=0; $y<100; $y++) // We loop into the pixels Y
    {
    $rgb = imagecolorat($resized, $x, $y); // get the RGB of the pixel
    $index = imagecolorsforindex($resized, $rgb); // Get the RGB Index
    $key = 'R' . $index['red'] . 'G' . $index['green'] . 'B' . $index['blue']; // Put it into a string
    if (empty($colours[$key])) // If it's the first time this colour is encountered
    {
    $colours[$key] = 1; // We give it a value of 1
    } else { // If it's not the first time it is encountered
    $colours[$key]++; // We increment its value
    }
    }
    }
    arsort($colours, SORT_NUMERIC); // We then sort the colours array so that the first one is the most frequent one
    return key($colours); // we return the most frequent value
    }


    Working with images sure is fun. Looking forward to have more functions with the GD libraryRead more
    Wiki: PHP Convert Hex Color to RGB and RGB to Hexwiki
    posted by admin on April 13, 2016
    Converting certain values back and forth is often necessary when developing functions to help your website work the way you want it to. I needed a function that would convert a hex color to rgb and for some reason it took me a while to figure it out.

    function hex2rgb($hex) {
    $hex = str_replace("#", "", $hex);

    if(strlen($hex) == 3) {
    $r = hexdec(substr($hex,0,1).substr($hex,0,1));
    $g = hexdec(substr($hex,1,1).substr($hex,1,1));
    $b = hexdec(substr($hex,2,1).substr($hex,2,1));
    } else {
    $r = hexdec(substr($hex,0,2));
    $g = hexdec(substr($hex,2,2));
    $b = hexdec(substr($hex,4,2));
    }
    $rgb = array($r, $g, $b);
    //return implode(",", $rgb); // returns the rgb values separated by commas
    return $rgb; // returns an array with the rgb values
    }


    This function works with both shorthand hex codes such as #f00 and longhand hex codes such as #ff0000. It also accepts the number sign (#) just in case. You can see there are two return lines at the end of the function. The first, which is commented out, will return the rgb values separated by a comma. The second, which is the default, will return an array with the rgb values.

    So now with this function in place we can use it like so:

    $rgb = hex2rgb("#cc0");
    print_r($rgb);


    The above function would output:

    Array ( [0] => 204 [1] => 204 [2] => 0 )


    Since we are going one way with this, might as well go the other. Here is a function to convert rgb to a hex color:

    function rgb2hex($rgb) {
    $hex = "#";
    $hex .= str_pad(dechex($rgb[0]), 2, "0", STR_PAD_LEFT);
    $hex .= str_pad(dechex($rgb[1]), 2, "0", STR_PAD_LEFT);
    $hex .= str_pad(dechex($rgb[2]), 2, "0", STR_PAD_LEFT);

    return $hex; // returns the hex value including the number sign (#)
    }


    This function works like so:

    $rgb = array( 255, 255, 255 );
    $hex = rgb2hex($rgb);
    echo $hex;


    The above function would output:

    #ffffff
    Read more