Write text on pictures php

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

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

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

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

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. Расширение файла вы прописываете сами в зависимости от выбранной функции сохранения.

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

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

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

Источник

Add Text To Images In PHP (Simple Examples)

Welcome to a tutorial on how to add text to images in PHP. Need to add a watermark or copyright message on uploaded images on a PHP server?

  • $img = imagecreatefromjpeg(«IMG.JPG»);
  • $size = 24; $x = 5; $y = 30; $angle = 0; $quality = 100;
  • $color = imagecolorallocate($img, 255, 255, 255);
  • imagettftext($img, $size, $x, $y, $angle, $color, «PATH/FONT.TTF», «TEXT»);
  • imagejpeg($img, «SAVE.JPG», $quality);

It’s that simple. But let us walk through more examples, along with a simple tip to center the text on the image – Read on!

TLDR – QUICK SLIDES

How To Add Text To Images In PHP

TABLE OF CONTENTS

PHP ADD TEXT TO IMAGE

Let us now get into the examples of adding text to an image, it is actually very straightforward in PHP – We just need to load it as a new image object in PHP, add some text on top of it, then save it.

EXAMPLE 1) SIMPLE WRITE TEXT ON IMAGE

  1. Load the image into an object with imagecreatefromjpeg() .
  2. Write text using imagettftext() .
  3. Output the image – Directly show it in the browser, save it into a file, save into the database, email it as an attachment, do whatever is required.

EXAMPLE 2) CENTER TEXT IN IMAGE

Yikes! This looks crazy, but the main bulk of this script is calculating the position of the text box. If you want to be a happy person, just skip and use this as-it-is… If not, here’s how the calculations work:

(C1) Self-explanatory. Get the image width with imagesx() and height with imagesy() .

(C2) To calculate the dimensions of the text box, we have to use imagettfbbox() . This returns an array with 8 numbers, which are the coordinates of the text box.

(C3) Lastly, we can calculate the center X and Y positions.

  • Center X = (width of image – width of text box) / 2.
  • Center Y = (height of image – height of text box) / 2.

EXAMPLE 3) NON-ENGLISH UTF-8 ENCODING

If you are working with non-English languages, GD is not exactly the friendliest. But all credits go to this post on StackOverflow – Just use a font for your required language and do a bit of manual UTF-8 encoding.

DOWNLOAD & NOTES

Here is the download link to the example code, so you don’t have to copy-paste everything.

SUPPORT

600+ free tutorials & projects on Code Boxx and still growing. I insist on not turning Code Boxx into a «paid scripts and courses» business, so every little bit of support helps.

EXAMPLE CODE DOWNLOAD

Click here for the source code on GitHub gist, just click on “download zip” or do a git clone. I have released it under the MIT license, so feel free to build on top of it or use it in your own project.

That’s it for the scripts. But before we wrap things up, here are a few more nuggets of information that you might be interested in.

ADDING TEXT TO PICTURES IN FOLDER

", GLOB_BRACE); foreach ($files as $f) < $img = imagecreatefromjpeg($f); // SAME AS ABOVE - WRITE TEXT TO IMAGE >

Just get all the images in the folder and loop through all of them.

You can specify which font to use, but please do not go on a download frenzy and start using every font you find on the Internet. There is a hidden nightmare behind fonts, and it is called copyright. Yes, some fonts are subjected to copyright, and you can get bitten by the law monster if you make money off edited images… Always check the usage license of the “free fonts”.

CENTER PARAGRAPH ON IMAGE & AUTO LINE BREAK

All I can say is – Very complicated, good luck. The best place to start is to study and modify the above “center text on image” example.

  • Calculate the dimensions of the “single line text box” and image.
  • Determine how many lines are required to fit the paragraph into the image. That is, break the text into multiple text boxes. Quick pseudo-code:
    • $numlines = ceil(WIDTH OF TEXTBOX / (WIDTH OF IMAGE * 70%));
    • if (HEIGHT OF LINES > HEIGHT OF IMAGE) < ERROR - CANNOT FIT >
    • $lines = [FIND SOME SMART WAY, TO BREAK TEXT, INTO MULTIPLE LINES];
    • GD & Image Functions – PHP
    • AJAX Image Upload In PHP – Code Boxx
    • Write Multi-Line Text On Image In PHP – Code Boxx
    • If you are looking for some fonts to use – Check out Font Squirrel.

    TUTORIAL VIDEO

    INFOGRAPHIC CHEAT SHEET

    THE END

    Thank you for reading, and we have come to the end of this short tutorial. I hope it has answered your question on how to add text to an image, and if you have anything to share with this guide, please feel free to comment below. Good luck and happy coding!

    Источник

    imagettftext

    Наносит текст text поверх изображения, используя TrueType шрифт.

    Список параметров

    Ресурс изображения, полученный одной из функций создания изображений, например, такой как imagecreatetruecolor() .

    Размер шрифта. В зависимости от вашей версии GD, он должен быть указан либо в пикселах (GD1) либо в типографских пунктах (GD2).

    Угол в градусах, 0 градусов означает расположение текста слева направо. Положительные значения означают поворот текста против часовой стрелки. Например, текст повернутый на 90 градусов нужно будет читать снизу вверх.

    Координаты x и y определяют отправную точку для первого символа текста (конкретно, левый нижний угол символа). Здесь есть отличие от функции imagestring() , в которой x и y определяют верхний левый угол первого символа. Например, «верхний левый» имеет координаты 0,0.

    y-координата. Это позиция базовой линии шрифта, в общем случае она не совпадает с низшей точкой в символе.

    Индекс цвета. Использование отрицательных индексов создает эффект выключенного сглаживания. См. imagecolorallocate() .

    Путь к файлу TrueType шрифта.

    В зависимости от версии GD библиотеки если fontfile не начинается с /, то в конец названия файла будет добавлено расширение .ttf, и библиотека будет пытаться найти этот файл по адресу, определенному в настройках библиотеки.

    При использовании GD библиотеки версий младше 2.0.18 символ space (пробел), как и точка с запятой, использовался в качестве ‘разделителя путей’ для различных файлов шрифтов. При использовании этой возможности будет выдаваться предупреждение: Warning: Could not find/open font. Решением такой проблемы в этих версиях может быть только исключение пробелов из путей файлов.

    В большинстве случаев размещение файлов шрифтов в директории скрипта решает подобные проблемы включения файлов.

    // Задание переменной окружения для GD
    putenv ( ‘GDFONTPATH=’ . realpath ( ‘.’ ));

    // Имя шрифта для использования (обратите внимание на отсутствие расширения .ttf)
    $font = ‘SomeFont’ ;
    ?>

    Текстовая строка в кодировке UTF-8.

    Для доступа к символам после 127го можно использовать числовые ссылки (в формате: €). Также поддерживается шестнадцатеричный формат (©). Строки в кодировке UTF-8 можно передавать напрямую.

    Именованные сущности, вроде ©, не поддерживаются. Используйте функцию html_entity_decode() , чтобы декодировать их в UTF-8 строки.

    Если символ не поддерживается шрифтом, вместо него будет нарисован незакрашенный прямоугольник.

    Возвращаемые значения

    Возвращает массив из 8 элементов, представляющих 4 точки — координаты углов рамки обрамляющей текст. Точки представлены в таком порядке: левый нижний угол, правый нижний, верхний правый, верхний левый. Углы указаны относительно текста, то есть «верхний левый» означает верхний левый угол текста, если расположить его горизонтально. В случае ошибки функция вернет FALSE .

    Список изменений

    Версия Описание
    5.2.0 Стало возможным задавать код сущности в тексте text шестнадцатеричным числом.

    Примеры

    Пример #1 Пример использования imagettftext()

    В этом примере будет создано изображение PNG с белым фоном размером 400×30 пикселов и надписью «Тест. » черным цветом (с серой тенью) шрифтом Arial.

    // Тип содержимого
    header ( ‘Content-Type: image/png’ );

    // Создание изображения
    $im = imagecreatetruecolor ( 400 , 30 );

    // Создание цветов
    $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 );

    // Текст надписи
    $text = ‘Тест. ‘ ;
    // Замена пути к шрифту на пользовательский
    $font = ‘arial.ttf’ ;

    // Тень
    imagettftext ( $im , 20 , 0 , 11 , 21 , $grey , $font , $text );

    // Текст
    imagettftext ( $im , 20 , 0 , 10 , 20 , $black , $font , $text );

    imagepng ( $im );
    imagedestroy ( $im );
    ?>

    Результатом выполнения данного примера будет что-то подобное:

    Вывод примера: imagettftext()

    Примечания

    Замечание:

    Для работы функции необходимо наличие установленных GD и » FreeType библиотек.

    Смотрите также

    Источник

    Читайте также:  Html ширина div по умолчанию
Оцените статью