Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Как получить переменные из CSV и зациклить выполнение скрипта?
Форумы портала PHP.SU » PHP » Напишите за меня, пожалуйста » Как получить переменные из CSV и зациклить выполнение скрипта?

Страниц (1): [1]
 

1. djonci - 23 Марта, 2019 - 19:16:10 - перейти к сообщению
Друзья! Помогите автоматизировать скрипт нанесения текста на изображение.

Что нужно:

1.Нужно чтобы переменные name, job, email брались из файла csv или txt. Где строки такого вида (name, job, email, filename)
2. При создании файла необходимо подставлять имя из переменной которая берется из записи: filename
3.Зациклить создание картинок пока не закончатся строки в текстовом файле.
4. Чтобы создавалась запись в отдельном файле c текстом о созданном файле с полями: (filename, ссылка на файл)

Понимаю что для многих это простая задача... ВыручайтеУлыбка Заранее благодарю.

Сам скрипт:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. // link to the font file no the server
  4. $fontname = 'font/Capriola-Regular.ttf';
  5. // controls the spacing between text
  6. $i=30;
  7. //JPG image quality 0-100
  8. $quality = 90;
  9.  
  10. function create_image($user){
  11.  
  12.                 global $fontname;      
  13.                 global $quality;
  14.                 $file = "covers/".md5($user[0]['name'].$user[1]['name'].$user[2]['name']).".jpg";      
  15.        
  16.         // if the file already exists dont create it again just serve up the original  
  17.         //if (!file_exists($file)) {   
  18.                        
  19.  
  20.                         // define the base image that we lay our text on
  21.                         $im = imagecreatefromjpeg("pass.jpg");
  22.                        
  23.                         // setup the text colours
  24.                         $color['grey'] = imagecolorallocate($im, 255, 255, 255);
  25.                         $color['green'] = imagecolorallocate($im, 55, 189, 102);
  26.                        
  27.                         // this defines the starting height for the text block
  28.                         $y = imagesy($im) - $height - 365;
  29.                          
  30.                 // loop through the array and write the text   
  31.                 foreach ($user as $value){
  32.                         // center the text in our image - returns the x value
  33.                         $x = center_text($value['name'], $value['font-size']); 
  34.                         imagettftext($im, $value['font-size'], 0, $x, $y+$i, $color[$value['color']], $fontname,$value['name']);
  35.                         // add 52px to the line height for the next text block
  36.                         $i = $i+52;    
  37.                        
  38.                 }
  39.                         // create the image
  40.                         imagejpeg($im, $file, $quality);
  41.                        
  42.         //}
  43.                                                
  44.                 return $file;  
  45. }
  46.  
  47. function center_text($string, $font_size){
  48.  
  49.                         global $fontname;
  50.  
  51.                         $image_width = 700;
  52.                         $dimensions = imagettfbbox($font_size, 0, $fontname, $string);
  53.                        
  54.                         return ceil(($image_width - $dimensions[4]) / 2);                              
  55. }
  56.  
  57.  
  58.  
  59.         $user = array(
  60.        
  61.                 array(
  62.                         'name'=> 'Ashley Ford',
  63.                         'font-size'=>'27',
  64.                         'color'=>'grey'),
  65.                        
  66.                 array(
  67.                         'name'=> 'Technical Director',
  68.                         'font-size'=>'16',
  69.                         'color'=>'grey'),
  70.                        
  71.                 array(
  72.                         'name'=> 'ashley@papermashup.com',
  73.                         'font-size'=>'13',
  74.                         'color'=>'green'
  75.                         )
  76.                        
  77.         );
  78.        
  79.        
  80.         if(isset($_POST['submit'])){
  81.        
  82.         $error = array();
  83.        
  84.                 if(strlen($_POST['name'])==0){
  85.                         $error[] = 'Please enter a name';
  86.                 }
  87.                
  88.                 if(strlen($_POST['job'])==0){
  89.                         $error[] = 'Please enter a job title';
  90.                 }              
  91.  
  92.                 if(strlen($_POST['email'])==0){
  93.                         $error[] = 'Please enter an email address';
  94.                 }
  95.                
  96.         if(count($error)==0){
  97.                
  98.         $user = array(
  99.        
  100.                 array(
  101.                         'name'=> $_POST['name'],
  102.                         'font-size'=>'33',
  103.                         'color'=>'grey'),
  104.                        
  105.                 array(
  106.                         'name'=> $_POST['job'],
  107.                         'font-size'=>'23',
  108.                         'color'=>'grey'),
  109.                        
  110.                 array(
  111.                         'name'=> $_POST['email'],
  112.                         'font-size'=>'23',
  113.                         'color'=>'green'
  114.                         )
  115.                        
  116.         );             
  117.                
  118.         }
  119.                
  120.         }
  121.  
  122. // run the script to create the image
  123. $filename = create_image($user);
  124.  
  125. ?>
  126.  
  127. <html xmlns="http://www.w3.org/1999/xhtml">
  128. <head>
  129. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  130.  
  131.  
  132. <style>
  133. input{
  134.         border:1px solid #ccc;
  135.         padding:8px;
  136.         font-size:14px;
  137.         width:300px;
  138.         }
  139.        
  140. .submit{
  141.         width:110px;
  142.         background-color:#FF6;
  143.         padding:3px;
  144.         border:1px solid #FC0;
  145.         margin-top:20px;}      
  146.  
  147. </style>
  148.  
  149. </head>
  150.  
  151. <body>
  152.  
  153.  
  154. <img src="<?=$filename;?>?id=<?=rand(0,1292938);?>" width="700" height="600"/><br/><br/>
  155.  
  156. <ul>
  157. <?PHP if(isset($error)){
  158.        
  159.         foreach($error as $errors){
  160.                
  161.                 echo '<li>'.$errors.'</li>';
  162.                        
  163.         }
  164.        
  165.        
  166. }?>
  167. </ul>
  168.  
  169.  
  170. <div class="dynamic-form">
  171. <form action="" method="post">
  172. <label>Name</label>
  173. <input type="text" value="<?PHP if(isset($_POST['name'])){echo $_POST['name'];}?>" name="name" maxlength="15" placeholder="Name"><br/>
  174. <label>Job Title</label>
  175. <input type="text" value="<?PHP if(isset($_POST['job'])){echo $_POST['job'];}?>" name="job" placeholder="Job Title"><br/>
  176. <label>Email</label>
  177. <input type="text" value="<?PHP if(isset($_POST['email'])){echo $_POST['email'];}?>" name="email" placeholder="Email"><br/>
  178. <input name="submit" type="submit" class="btn btn-primary" value="Update Image" />
  179. </form>
  180. </div>
  181.  
  182.  
  183.  
  184.  
  185. </body>
  186. </html>
  187.  
2. Vladimir Kheifets - 24 Марта, 2019 - 09:49:58 - перейти к сообщению
djonci пишет:
Друзья! Помогите автоматизировать скрипт нанесения текста на изображение.

Добрый день!
Вообще-то можно не сохранять сгенерированные изображения в файлах,
а написать скрипт который создаёт и выводит изображения.
Всё, что необходимо для этого можно передать через $_GET или $_SESSION
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. // ViewImage.php
  3. header('Content-Type: image/jpeg');
  4. $im = imagecreatefromjpeg($_GET["src"].".jpg");
  5. /*
  6. здесь изменяте картинку, например,  накладываете текст
  7. */
  8. imagejpeg($im);
  9. ?>
Так встaвляете картинки в HTML
CODE (html):
скопировать код в буфер обмена
  1. <img src="ViewImage.php?src=pass&text=abc" width="700" height="600"/>

Удачи!
3. djonci - 24 Марта, 2019 - 10:33:22 - перейти к сообщению
Vladimir Kheifets пишет:
djonci пишет:
Друзья! Помогите автоматизировать скрипт нанесения текста на изображение.

Добрый день!
Вообще-то можно не сохранять сгенерированные изображения в файлах,
а написать скрипт который создаёт и выводит изображения.
Всё, что необходимо для этого можно передать через $_GET или $_SESSION
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. // ViewImage.php
  3. header('Content-Type: image/jpeg');
  4. $im = imagecreatefromjpeg($_GET["src"].".jpg");
  5. /*
  6. здесь изменяте картинку, например,  накладываете текст
  7. */
  8. imagejpeg($im);
  9. ?>
Так встaвляете картинки в HTML
CODE (html):
скопировать код в буфер обмена
  1. <img src="ViewImage.php?src=pass&text=abc" width="700" height="600"/>

Удачи!
Спасибо за ответ! в том и дело что необходимо сгенерировать и сохранить сотни картинок для последующей загрузки на сайт. В ручную это займет очень много времени.
Было бы удобнее если б этот скрипт помог выполнить эту задачу с генерацией
4. Vladimir Kheifets - 24 Марта, 2019 - 11:22:13 - перейти к сообщению
Если требуется только наложить тексты на изображение, то вполне можно обойтись HTML и CSS.

 

Powered by ExBB FM 1.0 RC1