How to Create dynamic Image using PHP

How to Create dynamic Image using PHP

The following code generates a random dynamic image using PHP. The GD image functions are used to create dynamic image with PHP.

  • imagecreate() – Creates blank image resource of specified size (width and hwight).

  • imagecolorallocate() – Allocate a color for an image resource.

  • imagettfbbox() – Calculate the bounding box in pixels for TrueType text.

  • imagettftext() – Write text to the image using TrueType fonts.

  • imagepng() – Creates a PNG image.

  • imagedestroy() – Destroy an image resource.

Sorece code

Create index.php

// Specify font path
$font = 'fonts/verdana.ttf';

// Text font size
$font_size = 10;

// Get settings from URL
$setting = isset($_GET['s']) ? $_GET['s'] : "000_FFF_350_350";
$setting = explode("_", $setting);

$img = array();

// Define image width, height, and color
switch($n = count($setting)){
    case 
$n > 4 :
    case 
3:
        
$setting[3] = $setting[2];
    case 
4:
        
$img['width'] = (int) $setting[2];
        
$img['height'] = (int) $setting[3];
    case 
2:
        
$img['background'] = $setting[0];
        
$img['color'] = $setting[1];
        break;
    default:
        list(
$img['background'], $img['color'], $img['width'], $img['height']) = array('F', '0', 100, 100);
        break;
}

$background = explode(",",hex2rgb($img['background']));
$textColorRgb = explode(",",hex2rgb($img['color']));
$width = empty($img['width']) ? 100 : $img['width'];
$height = empty($img['height']) ? 100 : $img['height'];

// Get text from URL
$text = (string) isset($_GET['t']) ? urldecode($_GET['t']) : $width ." x ". $height;

// Create the image resource 
$image = @imagecreate($width, $height) or die("Cannot Initialize new GD image stream");

// Create image background
$background_color = imagecolorallocate($image, $background[0], $background[1], $background[2]);

// Grab the width & height of the text box
$bounding_box_size = imagettfbbox($font_size, 0, $font, $text);
$text_width = $bounding_box_size[2] - $bounding_box_size[0];
$text_height = $bounding_box_size[7]-$bounding_box_size[1];

// Text x&y coordinates
$x = ceil(($width - $text_width) / 2);
$y = ceil(($height - $text_height) / 2);

// Define text color
$text_color = imagecolorallocate($image, $textColorRgb[0], $textColorRgb[1], $textColorRgb[2]);

// Write text to image
imagettftext($image, $font_size, 0, $x, $y, $text_color, $font, $text);

// Set the content type header - in this case image/png
header('Content-Type: image/png');

// Output the image
imagepng($image);

// Free up memory
imagedestroy($image);

// Convert color code to rgb
function hex2rgb($hex) {
    
$hex = str_replace("#", "", $hex);

    switch(
strlen($hex)){
        case 
1:
            
$hex = $hex.$hex;
        case 
2:
            
$r = hexdec($hex);
            
$g = hexdec($hex);
            
$b = hexdec($hex);
            break;
        case 
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));
            break;
        default:
            
$r = hexdec(substr($hex,0,2));
            
$g = hexdec(substr($hex,2,2));
            
$b = hexdec(substr($hex,4,2));
            break;
    }

    
$rgb = array($r, $g, $b);
    return 
implode(",", $rgb); 
}


Please Share this course

It Looks like you have completed your course!! We have created Online series based on the above content. You can give a test and check your skill.




Be a Part of CollegeSpike by giving your precious comment here and help us in improving our content.