Можно ли использовать html с динамическими сгенерированными изображениями в php?

#php #html #gd

#php #HTML #gd

Вопрос:

Я использую этот код для создания изображения

 <?php

 // Set the content-type
 header('Content-Type: image/png');

 // Create the image
 $im = imagecreatetruecolor(400, 30);

 // Create some colors
 $white = imagecolorallocate($im, 255, 255, 255);
 $grey = imagecolorallocate($im, 128, 128, 128);
 $black = imagecolorallocate($im, 0, 0, 0);
 imagefilledrectangle($im, 0, 0, 399, 29, $white);

 // The text to draw
 $text = 'Testing...';
 // Replace path by your own font path
 $font = 'arial.ttf';

 // Add some shadow to the text
 imagettftext($im, 20, 0, 11, 21, $grey, $font, $text);

  // Add the text
  imagettftext($im, 20, 0, 10, 20, $black, $font, $text);

  // Using imagepng() results in clearer text compared with imagejpeg()
  (A)print ('<div class="test">');
  imagepng($im);
  print ('</div>');
  (B)imagedestroy($im);
  ?>
 

Код работает нормально, если я комментирую номер строки ‘A’ и ‘B’, и он генерирует изображение в браузере с написанным на нем тестированием. Но я хочу, чтобы изображение было в div. поэтому я раскомментировал строки (A) и (B), но это не дает правильного вывода. Сгенерированный html также является странным сгенерированный html является

 <img src="http://localhost/php/test92.php" alt="The image “http://localhost/php/test92.php” cannot be displayed, because it contains errors.">
 

Комментарии:

1. вы должны узнать, что такое HTML и как он работает. Без обид, просто дружеское предложение.

2. @Coll.Shrapnel спасибо за ваш совет.

Ответ №1:

В принципе, для создания динамического изображения в HTML вам понадобятся 2 PHP-файла:

  1. один для самого изображения
  2. еще один для PHP для его отображения.

Давайте посмотрим, как это сделать:

  1. Вы создаете image.php этот параметр accept, например: идентификатор изображения или имя файла. По соображениям безопасности вы ДОЛЖНЫ фильтровать любой параметр, который он получает.

    Почему вы должны это делать? потому что для создания изображения вы не можете смешивать его с другим выводом HTML. Не говоря уже об одном space или return , поскольку это приведет к повреждению изображения.

  2. Скажем, вы делаете HTML-код на другом PHP test92.php . К логике HTML здесь, например:
    1. получить данные изображения
    2. цикл данных
    3. отображение изображения => <img src="image.php?imageID=12" alt="" />

Ответ №2:

Если вам нужен div вокруг вашего изображения, вы должны сделать это в html, вы не можете сделать это в коде генерации изображения

 <div>
<img src="http://localhost/php/test92.php">
</div>
 

Если вы получаете ошибки, касающиеся изображения, попробуйте просмотреть URL-адрес изображения http://localhost/php/test92.php и посмотрите, как это выглядит.

Показывает ли он изображение, как вы ожидаете?