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.