Обработка изображений PHP - Сергей Житников: Web-разработчик

Обработка изображений PHP

После формирования изображения, над ним есть несколько вариантов действий:

  • Сохранить;
  • Вывести в браузер.

Сохраняем изображение

$font_path = 'arial.ttf'; //устанавливаем шрифт
$save_path = $_SERVER['DOCUMENT_ROOT'].'/img/'.date("Y_m_d_H_i_s").'.jpg'; //устанавливаем путь сохранения картинки
$base_img = $_SERVER['DOCUMENT_ROOT'].'/base_img.jpg'; //устанавливаем базовое изображение, на которое будем наносить надписи

$img = imagecreatefromjpeg($base_img); //создаем объект изображения, который будем использовать при формировании нового изображения
$white = imagecolorexact($img, 255, 255, 255); //задаем цвет, который можем потом использовать для окрашивания текста
$black = imagecolorexact($img, 0, 0, 0); //задаем цвет, который можем потом использовать для окрашивания текста

imagefttext($img, 25, 0, 405, 550, $white, $font_path, 'text_text'); //пишем текст в определенном координатами месте

imagejpeg($img, $save_path, 100); //сохраняем изображение (еще можно вывести результат в браузере)

imagedestroy($img); //освобождаем память

Выводим изображение в браузер

header('Content-Type: image/png');
imagejpeg($img, NULL, 100); //Выводим изображение в браузер
imagedestroy($img); //освобождаем память

Рисование фигур

Примеры рисования простейших фигур.

Горизонтальные линии

imageline($img, 350,1750,2050,1750, $white); //рисуем горизонтальную линию
imageline($img, 350,1751,2050,1751, $white); //рисуем горизонтальную линию - продвигаемся на пиксель, чтобы сделать линию толще
imageline($img, 350,1752,2050,1752, $white); //рисуем горизонтальную линию - продвигаемся на пиксель, чтобы сделать линию толще
imageline($img, 350,1753,2050,1753, $white); //рисуем горизонтальную линию - продвигаемся на пиксель, чтобы сделать линию толще

Прямоугольник без внутреннего фона с радиусом

function roundrect($im, $x1, $y1, $x2, $y2, $rad, $col) {

    imageline($im, ($x1 + $rad), $y1, ($x2 - $rad), $y1, $col);
    imageline($im, ($x1 + $rad), $y2, ($x2 - $rad), $y2, $col);
    imageline($im, $x1, ($y1 + $rad), $x1, ($y2 - $rad), $col);
    imageline($im, $x2, ($y1 + $rad), $x2, ($y2 - $rad), $col);
    imagearc($im, ($x1 + $rad), ($y1 + $rad), (2 * $rad), (2 * $rad), 180, 270, $col);
    imagearc($im, ($x2 - $rad), ($y1 + $rad), (2 * $rad), (2 * $rad), 270, 360, $col);
    imagearc($im, ($x2 - $rad), ($y2 - $rad), (2 * $rad), (2 * $rad), 0, 90, $col);
    imagearc($im, ($x1 + $rad), ($y2 - $rad), (2 * $rad), (2 * $rad), 90, 180, $col);
}

$background_white = imagecolorexactalpha($img, 255, 255, 255, 70); //задать цвет текста с прозрачностью
roundrect($img, 250, 1500, 2150, 2600, 40, $background_white); //рисуем не закрашенный прямоугольник

Прямоугольник с внутренним фоном без радиуса

$background_white = imagecolorexactalpha($img, 255, 255, 255, 70); //задать цвет текста с прозрачностью
imagefilledrectangle($img, 250, 1500, 2150, 2600, $background_white);

Задаем цвета

$black = imagecolorexact($img, 0, 0, 0); //задать цвет текста
$background_white = imagecolorexactalpha($img, 255, 255, 255, 70); //задать цвет текста с прозрачностью

Не стоит забывать,

  • многие шрифты не поддерживают кириллицу. Если нужно писать русский текст, стоит использовать определенные шрифты. Например arial или arial_bold.
  • Важно обратить внимание, с помощью какой функции создаем изображение. Если базовое изображение формата PNG, функция imagecreatefromjpeg не подойдет. Нужно использовать imagecreatefrompng.
Сергей Житников
Об авторе

Сергей Житников - Веб-разработчик

Занимаюсь веб-разработкой более 5 лет. Специализируюсь на создании адаптивных сайтов и веб-приложений на HTML5, CSS3 и JavaScript. Работаю с популярными CMS и фреймворками, а также уделяю большое внимание оптимизации производительности и чистоте кода.

Есть проект или идея? Буду рад помочь!

Связаться со мной

Последние статьи

19.06.2026
В статье собрал шпаргалку по основным компонентам Bitrix: bitrix:menu, news.list, news.detail, sale.basket.basket.line, main.include и breadcrumb. Разобрал настройку меню из разделов и элементов инфоблока через файлы .menu_ext.php, показываю полные конфигурации компонентов с пояснениями ключевых параметров. Готовые примеры для быстрого копирования и использования в проектах.
19.06.2026
Купоны в Битрикс неразрывно связаны с правилами работы с корзиной — без привязки к правилу они не сработают, а правило без купонов применит скидку на все товары. Разбираю создание купонов через DiscountCouponTable::add(): обязательные и опциональные поля, типы купонов, флаги активности. Показываю примеры работы с датами через объект DateTime (прибавление дней, месяцев и минут).
19.06.2026
Редактирование готовых PDF в PHP — задача нетривиальная. В статье покажу, как с помощью FPDF и FPDI изменять атрибуты документа (Title, Author, Keywords) без потери исходной геометрии страниц. Разберем главную ошибку: почему при смене ориентации страницы содержимое обрезается, и как это исправить.