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. Расширение файла вы прописываете сами в зависимости от выбранной функции сохранения.
Ну вот, вроде, и все, что вам нужно знать, остальные моменты помечены в коде.
Часть «./» означает что чтение и сохранение файлов осуществляется в той папке, где находится ваш скрипт.
Если возникли вопросы – задавайте их в комментариях.
Как написать текст на картинки/изображении с помощью php
О тексте на картинке через php
Пишем текст на картинке с помощью php
Для того, чтобы написать текст на картинке нам потребуется:
В переменную «$domen» помещаем ваш домен:
В переменную «$home» путь до корневой на сервере:
Наш тренировочный файл имеет разрешение 400 х 400 «img_php_position_1.png», поэтому позиция будет высчитываться из этих параметров.
Далее нам понадобится шрифт :
Устанавливаем размер нашего шрифта:
Отступы сверху и слева :
Создание цвета для изображения:
Пишем текст на картинке php :
Сохраняем новый рисунок уже с написанным текстом:
Пример написанного текста в php на картинке
Наша картинка, на которой будем писать текст через php :
Пример написанного текста в php на картинке
Это просто пустой белый лист, вы можете взять любую другую картинку.
Это у нас 11 строка в скрипте. в скрипте.
Пример написанного текста в php на картинке
2).После использования данного скрипта с данными настройками и шрифтом получается вот такая картинка с текстом, который написан с помощью php скрипта^
Пример написанного текста в php на картинке
Пример написанного текста в php на картинке
Наложение текста на картинку
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Наложение текста на картинку
Вообщем. Я накладываю изображение 2 на изображение 1 и поверх всего этого, мне нужно написать.
Наложение копирайта(логотип) на картинку
наложение копирайта (логотип) на картинку. у меня из БД выводится картинки и мне надо что бы на.
Наложение текста
Здравствуйте подскажите пожалуйста верный ли код и как вывести полученное изображение? 12
Решение
lyod, Большое спасибо, то что нужно.
Не подскажете как я могу его протестировать? К сожалению оказалось что мой хостинг не поддерживает скрипты в html файлах.
З.Ы. это на хостинге
З.Ы.Ы. а на Denwer заработало так же из-за смены массива, но потом снова куча ошибок в строках.
lyod, оставил картинку в корне. Пока что это не приоритет.
То есть имею так:
Z:\home\doge.ru\www\index.php
Z:\home\doge.ru\www\image.jpg
Z:\home\doge.ru\www\images
Добавлено через 5 минут
lyod, исправил. Работает сейчас.
Все из-за каких-то настроек Denwer.
З.Ы. а хостинг какой-то туповатый, отказывается поддерживать скрипт даже в php файле.
Добавлено через 11 минут
lyod, последний вопрос, куда сохраняется сама картинка? Ну я имею ввиду переменную?
Если мне допустим нужно будет её вывести?
Forastero, на счет сохранения понял, а вот как вывести не очень. Можно более подробно?
Добавлено через 14 минут
Вывел глупо, но все же..
Скрипт работает, все хорошо. Но у меня вопрос, как располагать текст по центру?
При печати дипломов, у людей разные фамилии и имена, с разной длиной. Как сделать что бы текст центрировался, а не прилипал к левому углу?
igoryak, путь абсолютный пропишите к шрифту.
А вообще, класс сырой. Настройки ($settings) лучше передавать в конструктор, а не жестко прописывать в классе. И лучше не в виде массива передавать, а в виде DTO. Или хотя бы как аргументы конструктора.
Я в вашей теме рекомендовал хорошую библиотеку для работы с изображениями. Не знаю, почему вы внимания не обратили.
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Наложение текста на изображение
Добрый день Каким методом и как лучшего всего будет наложить текст на картинку по конкретным.
Наложение текста на изображение, без сохранения
Здравствуйте форумчане. Подскажите пожалуйста, как решить мою задачу. Есть папка на сайте с.
Наложение текста на фото при загрузке фото на сайт
я вот хочу на движке Discuz сделать так чтобы например я загружаю фото и на фото накладывается.
Вырезать картинку с текста
Как можно из текста вытянуть путь к первой картинки?
imagefttext
(PHP 4 >= 4.0.7, PHP 5, PHP 7, PHP 8)
imagefttext — Нанесение текста на изображение, используя шрифты FreeType 2
Описание
Список параметров
Размер шрифта в пунктах.
Угол в градусах, 0 градусов означает расположение текста слева направо. Положительные значения означают поворот текста против часовой стрелки. Например, текст повёрнутый на 90 градусов нужно будет читать снизу вверх.
y-координата. Это позиция базовой линии шрифта, в общем случае она не совпадает с низшей точкой в символе.
Путь к TrueType шрифту, который требуется использовать.
В большинстве случаев размещение файлов шрифтов в директории скрипта решает подобные проблемы включения файлов.
Текст для вставки в изображение.
Ключ | Тип | Значение |
---|---|---|
linespacing | float | Определяет рисование нижнего подчёркивания |
Возвращаемые значения
Эта функция возвращает массив, определяющий четыре точки рамки текста. Текст внутри этих границ начинается с левого нижнего угла и поворачивается против часовой стрелки:
0 | нижняя левая x-координата |
1 | нижняя левая y-координата |
2 | нижняя правая x-координата |
3 | нижняя правая y-координата |
4 | верхняя правая x-координата |
5 | верхняя правая y-координата |
6 | верхняя левая x-координата |
7 | верхняя левая y-координата |
Список изменений
Версия | Описание |
---|---|
8.0.0 | image теперь ожидает экземпляр GdImage ; ранее ожидался ресурс ( resource ). |
Примеры
Пример #1 Пример использования imagefttext()
// Путь к ttf файлу шрифта
$font_file = ‘./arial.ttf’ ;
// Вывод изображения
header ( ‘Content-Type: image/png’ );
Примечания
Смотрите также
User Contributed Notes 15 notes
Do this as root :
apt-get install libfreetype6-dev
After spending the evening with some work on automatically generated images, I had the idea to switch of anti-aliasing (looking, if some font would look better that way), which turned out not to be quite so easy.
Actually you have to use the negative of the desired color to switch of antialising. I include the corresponding line from my code (line split up):
// USE NEGATIVE OF DESIRED COLOR TO SWITCH OF ANTI-ALIASING
ImageFTText ($neuesBild,$fontsize,$fontangle,$TextPosX,$TextPosY,
-$custom_fg,$fonttype,$text,array());
If you’re interested in turning off FreeType hinting, search for the following line in the gd source (gdft.c):
err = FT_Load_Glyph (face, glyph_index, FT_LOAD_DEFAULT);
and replace it with
err = FT_Load_Glyph (face, glyph_index, FT_LOAD_NO_HINTING);
Recompile GD, and vo�la: beauteous antialiasing.
This function is very simular to imageffttext(), you may find the information provided on its manual page helpful:
For a design project I am required to have spacing between characters; since imagefttext does not support this feature I have created a function which does support this.
The arguments are identical to imagefttext, accept that (array)$extrainfo now accepts the ‘character_spacing’ spacing parameter. The return values are as expected, and include the image boundaries of the entire string including the character spacing.
I hope this is of some use to someone.
— KeepSake
// Required header (assuming we use png images)
header ( «Content-type: image/png» );
could be different. This helped when setting GDFONTPATH.
GD1 was OK as it used pixels for font rendering, but GD2 uses points, which only makes any sense if you know the DPI that it assumes when rendering text on the image surface. I have not been able to find this anywhere in this documentation but have examined the GD2 source code and it appears to assume a DPI of 96 internally. However, this can easily be customised in the GD2 source so it cannot be assumed that all PHP interpreters out there have a GD2 compiled using 96dpi internally.
If it does, and you are using it to construct images whose target DPI is not 96, you can calculate the point size to supply to imageftbox() and imagefttext() like this:
/* 100mm x 100mm image */
$imageWidth = 100 ;
$imageHeight = 100 ;
/* 300 dpi image, therefore image is 1181 x 1181 pixels */
$imageDPI = 300 ;
header ( «Content-type: image/jpeg» );
I found myself in need of an align right function and found one on the imagepstext manual page. I can’t imagine I’m the only person who’s needed to use this, so here’s a slightly modified version that works with imagefttext:
$text1 = «shenko.homedns.org» ; // Here is our text
Thanks for the script! I modified it to show several fonts that I was wanting to use. I am using GD-2.0.7, FreeType-2.1.3(text rotation fix,among others), and PHP-4.2.3 and had to include the array information to get it to work.
Code change follows:
$fontfile=»/usr/local/fonts/ttf/bookantbd.ttf»;
// Waterfall of point sizes to see what Freetype 2’s autohinting looks like:
//
for($i=4;$i 1.0));
>
Since this function is not documented, I felt it was best that I shed some light on the extrainfo parameter.
Basically it accepts an array containing the following options as keys and an associated value:
(int) flags [more info in the GD reference manual]
(double/float) linespacing
(int) charmap
(int) hdpi
(int) vdpi
(string) xshow
(string) fontpath
My C/C++ is not very good but this is the best I can explain. Read the documentation for more information. 🙂
A very simple example of usage would be:
I’m not sure if this is a PHP issue or an GD issue, but after upgrading to PHP 5.3.2, text written at an angle has become top-justified (so «N» and «n» have the same top, but the bottom of the «N» is lower than the bottom of the «n». I’ve written a kludgy work-around, which writes the text to a non-rotated temporary image, then copies the temporary image, rotated onto the main image. The kludginess is to get around the fact that I can’t seem to extract the font info, particularly the distance between the baseline and the very bottom (I’ve hard-coded it as 30% of the font size)
I hope the bug can be fixed (if it is indeed a bug) or that others can improve this code:
Наложение текста на изображение по центру на php
Наложение текста на картинку при помощи php не такая уж и сложная задача, главное разобраться с функцией imagettftext(), которая имеет ряд параметров:
Описание
imagettftext(‘Фон или фотка’, ‘Размер шрифта’, ‘Угол наклона’, ‘Координат оп оси X’, ‘Координат оп оси Y’, ‘Цвет шрифта’, ‘Путь к файлу со шрифтом’, ‘Любой текст’)
Код php наложения текста
Наложение текста по центру исходной картинки, то есть если вы подставите свой фон для наложения текста, то он все ровно будет расположен по центру. Так же мы добавили в код обводку на текст, для того что бы на светлых тонах фонового ихзображения, текст все ровно выделялся и удобно читался пользователем.
Наложение текста по центру
imagettfbbox() возвращает массив из 8 элементов, представляющих 4 точки, образующие бокс текста:
0- | нижний левый угол, X-позиция |
1- | нижний левый угол, Y-позиция |
2- | нижний правый угол, X-позиция |
3- | нижний правый угол, Y-позиция |
4- | верхний правый угол, X-позиция |
5- | верхний правый угол, Y-позиция |
6- | верхний левый угол, X-позиция |
7- | верхний левый угол, Y-позиция |
Разметка на html
Разметку мы делаем для наглядного примера и удобного теста.