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:
<?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:
<?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 :
<?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:
<?php $img_obj=new IMG_PROCESS($font_file1,$font_file2,$font_size,$font_size_watermark); ?>
Now generate a single image as follow:
<?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 :
<?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:
<?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.