Hi Geeks,
In this tutorial we will learn that how to Create and save dynamic image in php using gd library or Text to Image Convert using php code . in this example we have a requirement to create a image with specific width and height and specific background and watermark also.
So that we have created a PHP Class to generate and save the image to specific folder or path.
please follow the steps to achive this task.
Step 1. Create a class file for generate image with name class.img.php with following code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
<?php class IMG_PROCESS{ var $_font1=""; var $_font2=""; var $_font_size=""; var $_font_size_watermark=""; public function __construct($font_1,$font_2,$font_size="40",$font_size_watermark="15") { $this->_font1=$font_1; $this->_font2=$font_2; $this->_font_size=$font_size; $this->_font_size_watermark=$font_size_watermark; } public function imagettftext_cr(&$im, $size, $angle, $x, $y, $color, $fontfile, $text) { // retrieve boundingbox $bbox = imagettfbbox($size, $angle, $fontfile, $text); // calculate deviation $dx = ($bbox[2]-$bbox[0])/2.0 - ($bbox[2]-$bbox[4])/2.0; // deviation left-right $dy = ($bbox[3]-$bbox[1])/2.0 + ($bbox[7]-$bbox[1])/2.0; // deviation top-bottom // new pivotpoint $px = $x-$dx; $py = $y-$dy; return imagettftext($im, $size, $angle, $px, $y, $color, $fontfile, $text); } public function generate_img($name,$savepath,$size_arr,$watermark,$rgb=array("34","96","76")) { $image = imagecreate($size_arr['width'],$size_arr['height']); $rgb_background = imagecolorallocate($image,$rgb[0],$rgb[1],$rgb[2]); $grey_shade = imagecolorallocate($image,40,40,40); $white = imagecolorallocate($image,255,255,255); // Local font files, relative to script $otherFont = $this->_font1; $font = $this->_font2; $i=0; while($i<10){ $this->imagettftext_cr($image,12,$this->_font_size_watermark,rand(100,500),rand(200,500),$grey_shade,$otherFont,$watermark); $i++; } // Main Text $w=$size_arr['width'] / 2 ; $h=$size_arr['height'] / 2 ; $this->imagettftext_cr($image,$this->_font_size,0,$w,$h,$white,$font,$name); $this->imagettftext_cr($image,$this->_font_size_watermark,0,$w,$h+30,$white,$otherFont,$watermark); imagejpeg($image,$savepath); } } ?> |
Step 2. make another php file with any name.
and include the class file as follow:
1 2 3 |
<?php include 'class.img.php';//include class file for generate image ?> |
Now create a instance of img class with font file names and sizes as following :
1 2 3 4 5 6 |
<?php $font_file1="fonts/arial.ttf"; $font_file2="fonts/times.ttf"; $font_size="40"; $font_size_watermark="15"; ?> |
Init with font files and font sizes as follow:
1 2 3 |
<?php $img_obj=new IMG_PROCESS($font_file1,$font_file2,$font_size,$font_size_watermark); ?> |
Now generate a single image as follow:
1 2 3 4 5 6 7 8 |
<?php $text_to_image="THIS IS MY TEXT";// $size_arr=array("width"=>"500","height"=>"500"); //define height and width $savepath="images/my_image_test.jpg"; $watermark="w3school test"; $rgb=array("0","0","0");//define a black rgb scheme $img_obj->generate_img($text_to_image,$savepath,$size_arr,$watermark,$rgb); //call the generate image ?> |
Generate multiple images in loop as following code :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<?php $text=array("MY IMAGE TEXT 1","MY IMAGE TEXT 2","MY IMAGE TEXT 3","MY IMAGE TEXT 4","MY IMAGE TEXT 5",); foreach($text as $title) { // $img_name=strtolower(str_replace(" ","-",$title)); $size_arr=array("width"=>"1366","height"=>"768"); //define height and width $savepath="images/".$img_name.".jpg"; $watermark="w3school test watermark"; $rgb=array("34","96","76");//define a light green rgb scheme $img_obj->generate_img($title,$savepath,$size_arr,$watermark,$rgb); //call the generate image function // } ?> |
Complete Code of above snippets:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
<?php include 'class.img.php';//include class file for generate image //now create a instance of img class with font file names and sizes as following $font_file1="fonts/arial.ttf"; $font_file2="fonts/times.ttf"; $font_size="40"; $font_size_watermark="15"; $img_obj=new IMG_PROCESS($font_file1,$font_file2,$font_size,$font_size_watermark); //init with font files and font sizes //now generate a single image $text_to_image="THIS IS MY TEXT";// $size_arr=array("width"=>"500","height"=>"500"); //define height and width $savepath="images/my_image_test.jpg"; $watermark="w3school test"; $rgb=array("0","0","0");//define a black rgb scheme $img_obj->generate_img($text_to_image,$savepath,$size_arr,$watermark,$rgb); //call the generate image //now generate a single image //generate multiple images in loop $text=array("MY IMAGE TEXT 1","MY IMAGE TEXT 2","MY IMAGE TEXT 3","MY IMAGE TEXT 4","MY IMAGE TEXT 5",); foreach($text as $title) { // $img_name=strtolower(str_replace(" ","-",$title)); $size_arr=array("width"=>"1366","height"=>"768"); //define height and width $savepath="images/".$img_name.".jpg"; $watermark="w3school test watermark"; $rgb=array("34","96","76");//define a light green rgb scheme $img_obj->generate_img($title,$savepath,$size_arr,$watermark,$rgb); //call the generate image function // } //generate multiple images in loop ?> |
[viraldownloader id=113 text=’Download the Complete Code by Sharing this post and click on generate button after sharing’]
Note: please confirm GD library on your php server. and create a images folder in project with 755 or 775 or 777 permissions.