Артём Мáлков

Как нанести текст на изображение с помощью PHP?

29 сен6 комм

PHP – многофункциональный язык программирования, и мы с вами не один раз в этом убеждались. Сегодня мы немножко поработаем с графикой, а именно – я научу вас наносить нужный вам текст на изображение с помощью этого языка.

Для начала приведу полный код скрипта, который хорошо прокомментирован:

<?php

	$img = "./pandoge_com.png"; // Ссылка на файл
	$font = "./arial.ttf"; // Ссылка на шрифт
	$font_size = 24; // Размер шрифта
	$degree = 0; // Угол поворота текста в градусах
	$text = "Hello, World!"; // Ваш текст
	$y = 100; // Смещение сверху (координата y)
	$x = 200; // Смещение слева (координата x)
	$pic = imagecreatefrompng($img); // Функция создания изображения
	$color = imagecolorallocate($pic, 0, 0, 0); // Функция выделения цвета для текста
	
	imagettftext($pic, $font_size, $degree, $x, $y, $color, $font, $text); // Функция нанесения текста
	imagepng($pic, "./".time().".png"); // Сохранение рисунка
	imagedestroy($pic); // Освобождение памяти и закрытие рисунка
	
?>

А теперь я расскажу вам о некоторых его нюансах.

1. Переменная $font – обязательно (во избежание ошибок) должна содержать в себе ссылку на файл шрифта. Для примера в конце статьи прикреплен шрифт «Arial».

2. Переменная $pic. Здесь в зависимости от вашего формата изображения используете соответствующую функцию:

PNG – imagecreatefrompng;
JPG – imagecreatefromjpeg;
GIF – imagecreatefromgif.

3. Переменная $color – цвет шрифта в RGB-формате. Черный цвет – «0, 0, 0», белый – «255, 255, 255» и т.д.

4. Функция «imagepng». Здесь вы выбираете ту функцию, в формате которой хотите сохранить изображение:

PNG – imagepng;
JPG – imagejpeg;
GIF – imagegif.

Обратите внимание, что для того, чтобы не происходило перезаписи файлов, в качестве имени файла выступает временная метка Unix. Расширение файла вы прописываете сами в зависимости от выбранной функции сохранения.

Ну вот, вроде, и все, что вам нужно знать, остальные моменты помечены в коде.

Часть «./» означает что чтение и сохранение файлов осуществляется в той папке, где находится ваш скрипт.

Если возникли вопросы – задавайте их в комментариях.

Файл
Размер
Ссылка
arial.zip
194,08 Kb
Скачать с сервера
Рекомендуем к просмотру
Как сделать жирный текст (шрифт) в HTML/CSS/jQuery/JavaScript?
Статьи и советы
Поочередное выполнение функций на jQuery
Статьи и советы
Накладываем градиент на текст с помощью CSS3
Статьи и советы
6
комментариев
Форма комментирования этого поста скрыта. Авторизуйтесь, чтобы расширить привилегии гостевого посещения и получить необходимую помощь от сообщества Pandoge.
    • 1
    1
      •  Пользователь
    6 окт в 10:07

    Здравствуйте, статья понятная и доступная, спасибо. Но не могу понять почему ошибка Fatal error: Uncaught Error: Call to undefined function imagecreatefrompng() in <...>\index.php:16 Stack trace: #0 {main} thrown in <...>\index.php on line 16

    Строка 16

    $pic = imagecreatefrompng($img); // Функция создания изображения

    Использую виндовс сервер, php 8.0

      • 1
      1066
        •  Команда Pandoge
      8 окт в 11:03

      Иван, здравствуйте! Полагаю, что у вас отсутствует библиотека GD. Проверить это можно следующим образом.

      Создайте в корне сайта файл gd-test.php и вставьте в него:

      <?php
      
      	if(in_array('gd', get_loaded_extensions())) {
      	
      		echo 'GD ON';
      		
      	} else {
      	
      		echo 'GD OFF';
      		
      	}
      	
      ?>

      После этого, посетите адрес /gd-test.php и проверьте, какое сообщение вам выведется.

      • 2
      1
        •  Пользователь
      11 окт в 10:31

      Артём Мáлков, здравствуйте. Проблема действительно в этом. Спасибо.

      • 1
      1066
        •  Команда Pandoge
      12 окт в 01:08

      Иван, обращайтесь smiley

    • 1
    766
      •  Гости
    13 апр в 13:49

    Отличная статья! Лаконичная и понятная. Сделал всё step-by-step и нанёс текст на своё изображение с помощью PHP! Спасибо автору smiley

    • 4
    766
      •  Гости
    8 фев в 20:08

    Здравствуйте, а вот вопрос.

    Можно ли как то добавить стили?

Подняться наверх
«Pandoge» - помощник вебмастера