D
D
djonci2019-03-23 20:06:33
Automation
djonci, 2019-03-23 20:06:33

How to get variables from CSV and loop script execution?

Friends! Help automate the script for applying text to the image.
What you need:
1. You need the variables name, job, email to be taken from a csv or txt file. Where are the lines of this form (name, job, email, filename)
2. When creating a file, you must substitute the name from the variable that is taken from the record: filename
3. Loop the creation of pictures until the lines in the text file run out.
4. To create a record in a separate file with text about the created file with fields: (filename, link to the file)
I understand that for many this is a simple task ... Help me out :) Thank you in advance.
The script itself:

<?php

// link to the font file no the server
$fontname = 'font/Capriola-Regular.ttf';
// controls the spacing between text
$i=30;
//JPG image quality 0-100
$quality = 90;

function create_image($user){

    global $fontname;	
    global $quality;
    $file = "covers/".md5($user[0]['name'].$user[1]['name'].$user[2]['name']).".jpg";	
  
  // if the file already exists dont create it again just serve up the original	
  //if (!file_exists($file)) {	
      

      // define the base image that we lay our text on
      $im = imagecreatefromjpeg("pass.jpg");
      
      // setup the text colours
      $color['grey'] = imagecolorallocate($im, 255, 255, 255);
      $color['green'] = imagecolorallocate($im, 55, 189, 102);
      
      // this defines the starting height for the text block
      $y = imagesy($im) - $height - 365;
       
    // loop through the array and write the text	
    foreach ($user as $value){
      // center the text in our image - returns the x value
      $x = center_text($value['name'], $value['font-size']);	
      imagettftext($im, $value['font-size'], 0, $x, $y+$i, $color[$value['color']], $fontname,$value['name']);
      // add 52px to the line height for the next text block
      $i = $i+52;	
      
    }
      // create the image
      imagejpeg($im, $file, $quality);
      
  //}
            
    return $file;	
}

function center_text($string, $font_size){

      global $fontname;

      $image_width = 700;
      $dimensions = imagettfbbox($font_size, 0, $fontname, $string);
      
      return ceil(($image_width - $dimensions[4]) / 2);				
}



  $user = array(
  
    array(
      'name'=> 'Ashley Ford', 
      'font-size'=>'27',
      'color'=>'grey'),
      
    array(
      'name'=> 'Technical Director',
      'font-size'=>'16',
      'color'=>'grey'),
      
    array(
      'name'=> '[email protected]',
      'font-size'=>'13',
      'color'=>'green'
      )
      
  );
  
  
  if(isset($_POST['submit'])){
  
  $error = array();
  
    if(strlen($_POST['name'])==0){
      $error[] = 'Please enter a name';
    }
    
    if(strlen($_POST['job'])==0){
      $error[] = 'Please enter a job title';
    }		

    if(strlen($_POST['email'])==0){
      $error[] = 'Please enter an email address';
    }
    
  if(count($error)==0){
    
  $user = array(
  
    array(
      'name'=> $_POST['name'], 
      'font-size'=>'33',
      'color'=>'grey'),
      
    array(
      'name'=> $_POST['job'],
      'font-size'=>'23',
      'color'=>'grey'),
      
    array(
      'name'=> $_POST['email'],
      'font-size'=>'23',
      'color'=>'green'
      )
      
  );		
    
  }
    
  }

// run the script to create the image
$filename = create_image($user);

?>

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />


<style>
input{
  border:1px solid #ccc;
  padding:8px;
  font-size:14px;
  width:300px;
  }
  
.submit{
  width:110px;
  background-color:#FF6;
  padding:3px;
  border:1px solid #FC0;
  margin-top:20px;}	

</style>

</head>

<body>


<img src="<?=$filename;?>?id=<?=rand(0,1292938);?>" width="700" height="600"/><br/><br/>

<ul>
<?php if(isset($error)){
  
  foreach($error as $errors){
    
    echo '<li>'.$errors.'</li>';
      
  }
  
  
}?>
</ul>


<div class="dynamic-form">
<form action="" method="post">
<label>Name</label>
<input type="text" value="<?php if(isset($_POST['name'])){echo $_POST['name'];}?>" name="name" maxlength="15" placeholder="Name"><br/>
<label>Job Title</label>
<input type="text" value="<?php if(isset($_POST['job'])){echo $_POST['job'];}?>" name="job" placeholder="Job Title"><br/>
<label>Email</label>
<input type="text" value="<?php if(isset($_POST['email'])){echo $_POST['email'];}?>" name="email" placeholder="Email"><br/>
<input name="submit" type="submit" class="btn btn-primary" value="Update Image" />
</form>
</div>




</body>
</html>

Answer the question

In order to leave comments, you need to log in

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question