Что такое код imagettftext

Работа с функцией imagettftext()

02.03.2011, 11:33

ImageTTFtext и украинские буквы
Добрый день, уважаемые. Прошу помощи у коллективного разума. Уверен, что проблема решается просто.

Функция imagettftext() и шрифты
Здравствуйте! Пишу защиту от ботов. Пользуюсь php-расширением GB. На картинке нужно написать.

Imagettftext не меняется цвет
Здравствуйте. Использую сначала imagecreatefrompng, потом накладываю текст Imagettftext, но как я.

Imagettftext не желает выводить кириллицу
Текст UTF-8, шрифт кириллицу рисовать может. В место одного кириллического символа рисуются две.

02.03.2011, 11:48 [ТС] 2

If you compiled PHP yourself but get an error:
Fatal error: Call to undefined function imagettftext().

You need to compile PHP with more options.

—with-gd
—enable-gd-native-ttf
—with-png
—with-zlib-dir=/usr/local/lib/zlib-1.2.1
—with-ttf
—with-jpeg-dir=/usr/local/lib/jpeg-6b/
—with-freetype-dir=/usr/local/lib/freetype-2.1.9/
—with-xpm-dir=/usr/X11R6/

The next set deal with setting up GD, and the appropriate options. Just enabling GD, ttf, png & jpeg is NOT enough. You also need Freetype and XPM.

Форум PHP программистов ► PHP практикум ► PHP для начинающих

Пейджер выключен!

Сообщений: 211
Пользователь №: 21026
На форуме:
Карма:

Накидал код который наносит надпись на картинку.
Но он у меня работает только на сохранение в папку(
Не могу сделать чтобы он выводил полученное изображение.
Выводит бесконечно краказябры на экран.

Вот код который сохраняет:

Почему не правильно работает строка вывода на экран:

PHP-функция imagettftext() и unicode

Я использую функцию PHP imagettftext() для преобразования текста в GIF-образ. Текст, который я конвертирую, имеет символы Юникода, включая японский. Все работает нормально на моей локальной машине (Ubuntu 7.10), но на моем сервере веб-хостинга японские персонажи искалечены. Что может быть причиной разницы? Все должно быть закодировано как UTF-8.

Копия правильного изображения с моей локальной машины: http://www.ibeni.net/flashcards/imagetest.php.gif

Вот решение, которое, наконец, помогло мне:

Преобразование строки в объекты HTML выполняется, за исключением того, что функция imagettftext() не принимает именованные объекты. Например,

нет. Возвращаясь к ISO-8859-1, преобразует именованные объекты обратно в символы, но есть вторая проблема. imagettftext() не поддерживает символы со значением больше > 127. Финал for-loop кодирует эти символы в шестнадцатеричном формате. Это решение работает для меня с текстом, который я использую (включает в себя японские, китайские и акцентированные латинские символы для португальцев), но я не уверен на 100%, что он будет работать во всех случаях.

Вся эта гимнастика необходима, потому что imagettftext() на самом деле не принимает строки UTF-8 на моем сервере.

У меня была такая же проблема с script, которая будет отображать текст в изображении и выводить его. Проблема заключалась в том, что из-за разных браузеров (или выносливости кода/паранойи, какой бы способ вы ни думали об этом) я не знал, что кодировка помещается внутри массива $_GET .

Вот как я решил проблему.

Это решает любую проблему, когда imagettftext не может обрабатывать символы выше # 127, просто изменяя ВСЕ символы (включая многобайтовые символы Юникода) в их числовой символ символа HTML — «& # 65;» для «A», «& # 66;» для «B» и т.д., на которую ссылается справочная страница.

У меня была та же проблема. Преобразование шрифта из otf в ttf помогло. Вы можете использовать FontForge (доступный в стандартном репозитории) для преобразования.

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

В соответствии с http://fr3.php.net/imagettftext различные версии библиотеки GD, используемые php, могут показывать различное поведение.

  • Версия GD на вашем локальном компьютере: 2.0 или выше
  • Версия GD на сервере веб-хостинга: в комплекте (совместим с 2.0.34)

Изменить: Другая идея: можете ли вы проверить, что $text = ‘日本語’; действительно сохраняется на вашем рабочем сервере, как это происходит на вашем рабочем сервере? Возможно, есть проблема с кодировкой с вашим script.

Далее править: BKB уже предложил это. Итак, в случае, если это причина: он сначала ответил: -)

Что такое код imagettftext

Подскажите, кто в теме:

который на локальном компе (установлен денвер с настройками по умолчанию) — работает, а на хостинге выдаёт ошибку:
Warning: imagettftext() [function.imagettftext]: any2eucjp(): invalid code in input string in .

Илон Маск рекомендует:  Атрибут bordercolor в HTML

при замене строчки:
$text = iconv(«WINDOWS-1251», «UTF-8», $text);
на
$text = iconv(«WINDOWS-1251», «EUC-JP», $text);
код начинает работать, но с ошибками — не всегда корректно отображает текст, а иногда тоже вылетает со схожей ошибкой.

Меню пользователя remaikee
Посмотреть профиль
Отправить личное сообщение для remaikee
Найти ещё сообщения от remaikee
09.05.2009, 02:02 #2
Меню пользователя Артем Юров
Посмотреть профиль
Найти ещё сообщения от Артем Юров

но совсем проблему это не решило.
т.е. с одними текстами отрабатывает нормально:
«Согласно Чехову, в человеке все должно быть прекрасно. Таким образом, согласно формальной логике, если в Вас что-либо не прекрасно, Вы — не человек.»
http://bzik.info/textpic/63/

а на других скрипт вылетает теперь с другой уже ошибкой, но по той же причине — ругается на японскую кодировку: Warning: imagettftext() [function.imagettftext]: any2eucjp(): input string too large in.
«Надо стараться стать человеком с детства, быть послушным, хорошо учиться, окончить институт для того, чтобы после иметь возможность удовлетворять свои животные инстинкты.»
http://bzik.info/textpic/316/

на локальном же денвере всё отрабатывает без ошибок как с использованием iconv(), так и с использованием приведённой функции. может можно что-то в настройках хостинга изменить где, чтоб велосипед не изобретать?

09.05.2009, 10:45 #3
Меню пользователя remaikee
Посмотреть профиль
Отправить личное сообщение для remaikee
Найти ещё сообщения от remaikee

проблема так и не решена. если кто в курсе как решить — подскажите, плз.

один и тот же скрипт на разный текст по разному отрабатывает.

imagettftext

Какие еще серверные инструменты существуют для создания текстовых изображений из файлов шрифтов TTF/OTF? Я не могу получить imagettftext () для…

Я хочу создать несколько изображений с помощью imagettftextи показать его в файле представления. Я использовал этот код: http://php.net/manual/en/function.imagettftext.php . Когда…

Я использую следующий код для создания текстового изображения. Все работает хорошо, за исключением того, что буквы «a» и » A…

Использование в качестве варианта imagettftext () для водяных знаков изображений с пользовательским текстом, но я, должно быть, делаю что-то не…

Мы обыскали сеть для решения этого, но пока не повезло… Мы используем: $output = strtoupper($input); Imagettftext($image, 27, 0, $start_x1, $start_y1,…

Я пытаюсь поместить многоцветный текст через imagettftext. Я пытался рисовать букву за буквой, но интервал ужасный. Вот мой код: $usrname_split…

Я преобразовал изображение из текста с помощью imagettftext()функции.Теперь я пытаюсь выровнять преобразованный текст изображения по центру, слева, справа, но я…

Я столкнулся с проблемой рисования эмодзи, которые находятся под блоком unicode «разные символы и пиктограммы». Вот пример кода:

Мне удалось объединить 3 изображения в PHP с этим кодом: header («Content-type: image/jpeg»); $image1Url = «1.jpg»; $image2Url = «2t.jpg»; $image3Url…

Мне нужно центрировать текст в изображении с помощью функции imagepng & imagettftext в php. Вот мой код: include «config.php»; header(‘Content-type:…

Чтобы сделать вопрос проще для понимания, я сделал этот очень простой сценарий :

Я пробую этот код с imagettftext(): // Set the content-type header(‘Content-Type: image/png’); // Create the image $im = imagecreatetruecolor(400, 30);…

Мой код с функцией imagettftext не работает в linux, однако хорошо работает в windows. imagettftext($thumb, 10, 0, 130, 60, $textcolor,…

Изображение загружается в браузер нормально, но когда я пытаюсь записать на него текст, изображение ломается (например: http://www.tradenepal.com.np/test.php ). Когда я…

я получил этот скрипт для генерации изображения из случайного jpg в каталоге, добавив случайный слоган из базы данных:

Я делаю небольшое приложение на php, которое помещает текст в изображение. Я получил его wotking с imagettftext. Я также смог…

Вопрос по unicode, gd, php &#8211 PHP функция imagettftext () и Unicode

используя функцию PHP imagettftext () для преобразования текста в изображение GIF. Текст, который я конвертирую, содержит символы Юникода, включая японский. Все отлично работает на моей локальной машине (Ubuntu 7.10), но на моем сервере веб-хоста японские символы искажены. Что может быть причиной разницы? Все должно быть закодировано как UTF-8.

Копия правильного изображения с моей локальной машины:http://www.ibeni.net/flashcards/imagetest.php.gif

Скопируйте phpinfo () с моего сервера веб-хостинга:http://example5.nfshost.com/phpinfo

Существует ли этот конкретный файл шрифтов на вашем компьютере? Если вы используете FTP для загрузки ваших файлов, вы используете двоичное кодирование?

У меня возникла та же проблема со скриптом, который будет отображать текст на изображении и выводить его. Проблема заключалась в том, что из-за разных браузеров (или из-за сложности кода / паранойи, как вы хотите об этом думать) у меня не было возможности узнать, какая кодировка была помещена внутри $_GET массив.

Вот как я решил проблему.

Это решает любую проблему с imagettftext не в состоянии обрабатывать символы выше # 127, просто заменяя ВСЕ символы (включая многобайтовые символы Юникода) на их сущность с цифровыми символами HTML — «A» для», «B» для «B», так далее.-которыйстраница справочника поддержка претензий.

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

В соответствии сhttp://fr3.php.net/imagettftextРазличные версии библиотеки GD, используемые php, могут демонстрировать различное поведение.

  • Версия GD на вашем локальном компьютере: 2.0 или выше
  • Версия GD на вашем сервере веб-хостинга: в комплекте (совместима с 2.0.34)

Редактировать: Другая идея: можете ли вы это проверить? $text = ‘日本語’; действительно ли так сохраняется на вашем рабочем сервере? Возможно, есть проблема с кодировкой вашего скрипта.

Следующее редактирование: БКБ уже предложил это. Так что в случае, если это причина: он был первым с ответом ;-)

Вот’Это решение, которое наконец-то сработало для меня:

Преобразование строки в сущности HTML работает за исключением того, что функция imagettftext () не делаетне принимать именованные объекты. Например,

не является. Преобразование обратно в ISO-8859-1, преобразование именованных объектов обратно в символы, но есть вторая проблема. imagettftext () не делаетt поддерживает символы со значением больше>127. Последний цикл for кодирует эти символы в шестнадцатеричном формате. Это решение работает для меня с текстом, который я использую (включая японские, китайские и латинские символы с акцентированным знаком для португальского), но я ‘Я не уверен на 100%, что это будет работать во всех случаях.

Вся эта гимнастика необходима, потому что imagettftext () нея не могу принять строки UTF-8 на моем сервере.

imagettftext() надо сделать относительный путь к файлу шрифта

перенес один сайт с шаредхостинга на ВПС. Перестали работать шрифты в php-скриптах использующих GD.

В ходе расследования выяснилось, что относительные пути к файлам шрифтов перестали работать. Например: Скрипт и файл шрифта лежат в одном каталоге и код был такой:

Сейчас функция работает только если код сделать таким:

Как бы мне снова вернуться к относительным путям, чтобы не модифицировать кучу скриптов?

Накидай симлинков (откуда надо куда надо), и не парься!

дело в том, что функция перестала принимать аргумент который не является абсолютным путём

imagettftext($img,X,X,X,X,$col,«симлинк на .ttf»,«TEXT»);

тоже не прокатит.

В принципе она подхватывает аргумент «./fontfile.ttf», что обозначает искать файл в текущем каталоге

Но мне бы хотелось, чтобы функции php ловили относительные пути без точки со слешем./ Или это неисправимая особенность операционной системы? старый хостинг был на линуксе и всё работало без точек со слешами.

Функция PHP imagettftext () и unicode

Я использую функцию PHP imagettftext () для преобразования текста в GIF-изображение. Текст, который я конвертирую, имеет символы Unicode, включая японский. Все отлично работает на моей локальной машине (Ubuntu 7.10), но на моем сервере webhost японские символы искажены. Что может быть причиной разницы? Все должно быть в кодировке UTF-8.

копия правильная изображение с моей локальной машины: http://www.ibeni.net/flashcards/imagetest.php.gif

6 ответов

вот решение, которое, наконец, сработало для меня:

преобразование строки в HTML-сущности работает, за исключением того, что функция imagettftext () не принимает именованные сущности. Например,

нет. Преобразование обратно в ISO-8859-1, преобразует именованные сущности обратно в символы, но есть вторая проблема. imagettftext () не поддерживает символы со значением больше >127. Окончательный for-loop кодирует эти символы шестнадцатеричные. Это решение работает для меня с текстом, который я использую (включает японские, китайские и акцентированные латинские символы для португальского), но я не уверен на 100%, что он будет работать во всех случаях.

все эти гимнастики необходимы, потому что imagettftext () действительно не принимает строки UTF-8 на моем сервере.

у меня была такая же проблема со скриптом, который будет отображать текст в изображении и выводить его. Проблема заключалась в том, что из-за разных браузеров (или стойкости кода/паранойи, как бы вы ни думали об этом) у меня не было возможности узнать, какая кодировка помещается внутри $_GET массив.

вот как я решил проблему.

Это решает любую проблему с imagettftext не в состоянии обрабатывать символы выше #127, просто изменив все символы (включая многобайтовые символы Юникода) в их HTML-цифровой символьный объект — «A» для «A», «B» для «B» и т. д.- который страница руководства исковые требования поддержала по.

У меня была та же проблема. Преобразование шрифта из otf в ttf помогло. Для преобразования можно использовать FontForge (доступный в стандартном репозитории).

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

согласно http://fr3.php.net/imagettftext, различные версии библиотеки GD, используемой php, могут показывать разное поведение.

  • версия GD на вашем локальном компьютере: 2.0 или выше
  • версия GD на вашем сервере webhost: в комплекте (2.0.34 совместимый)

Edit: Другая идея: можете ли вы проверить это $text = ‘日本語’; действительно сохраняется как это на рабочем сервере? Возможно, с вашим скриптом есть проблема с кодировкой.

следующие изменения: БКБ уже предложил. Так что в случае, если это причина: он был первым с ответом ; -)

я столкнулся с той же проблемой, и я нашел простое решение из ссылки php PHP ImageTttfText frunction:

что вы копируете необходимый файл шрифта, например (arial.ttf) в том же каталоге с вашим php-файлом:

здесь mysite: это ваш каталог веб-сайта

но попробуйте изменить переменную $font на

существует ли этот конкретный файл шрифта на вашей производственной машине? Если вы используете FTP для загрузки файлов, вы используете двоичную кодировку?

Что такое код imagettftext

11119 просмотра

4 ответа

63 Репутация автора

Я создаю прозрачный текст -> PNG изображения с php и пока все хорошо. Единственная проблема заключается в том, что я хочу иметь возможность переносить текстовое слово из-за фиксированной ширины. Или же иметь возможность вставлять в текст разрывы. У кого-нибудь был такой опыт? вот мой код .

Ответы (4)

6 плюса

81 Репутация автора

Просто разбейте текст на пробелы, чтобы получить массив слов, затем начните строить строки, просматривая массив слов, проверяя добавление каждого нового слова с помощью imagettfbbox, чтобы увидеть, создает ли оно ширину, превышающую установленную вами максимальную ширину. Если это так, начните следующее слово на новой новой строке. Я считаю, что проще просто создать новую строку с добавлением специальных символов разрыва строки, а затем просто снова взорвать эту строку, чтобы создать массив строк, каждую из которых вы будете записывать в окончательное изображение отдельно.

Что-то вроде этого:

Где символ канала — это символ разрыва строки.

Автор: Drew Размещён: 28.09.2011 07:57

17 плюса

802 Репутация автора

Я надеюсь, что это помогает другим, так как я думаю, что слишком поздно для вас .

1 плюс

13832 Репутация автора

Из всех ответов отвечали мне понравились Genius в неприятности «s лучшие , но это только добавляет разрыв строку каждые 15 символов , а не позволяя текст„поток“ , как это было бы в современном текстовом процессоре с переменной длиной линий в зависимости от выбора шрифта и какие символы используются (например, строчная буква L занимает меньше горизонтального пространства, чем прописная буква W — l против W).

Я пришел к решению, которое я выпустил как открытый исходный код на https://github.com/andrewgjohnson/linebreaks4imagettftext.

Для использования вы просто изменили бы:

Вот пример до и после с более длинным фрагментом текста:

плюса

30 Репутация автора

Если в вашей строке нет пробела, вы можете попробовать это:

PHP функция imagettftext () и Unicode

Я использую функцию PHP imagettftext() для преобразования текста в GIF-образ. Текст, который я конвертирую, имеет символы Юникода, включая японский. Все работает нормально на моей локальной машине (Ubuntu 7.10), но на моем сервере веб-хостинга японские персонажи искалечены. Что может быть причиной разницы? Все должно быть закодировано как UTF-8.

Копия правильного изображения с моей локальной машины: http://www.ibeni.net/flashcards/imagetest.php.gif

6 ответов

Вот решение, которое, наконец, помогло мне:

Преобразование строки в объекты HTML выполняется, за исключением того, что функция imagettftext() не принимает именованные объекты. Например,

нет. Возвращаясь к ISO-8859-1, преобразует именованные объекты обратно в символы, но есть вторая проблема. imagettftext() не поддерживает символы со значением больше > 127. Финал for-loop кодирует эти символы в шестнадцатеричном формате. Это решение работает для меня с текстом, который я использую (включает в себя японские, китайские и акцентированные латинские символы для португальцев), но я не уверен на 100%, что он будет работать во всех случаях.

Вся эта гимнастика необходима, потому что imagettftext() на самом деле не принимает строки UTF-8 на моем сервере.

Илон Маск рекомендует:  Добавление libsass
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL
11.05.2009, 22:17 #4