[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Наложение текста на изображение с помощью GD
AntonMMF
Начал изучать библиотеку GD. Столкнулся с проблемой: нужно подключить TTF-шрифт Times New Roman, нанести текст на изображение и вывести на страницу браузера. Почитал учебники и гугл, написал

$string = "test";
$im = imageCreateFromJpeg("reference1.jpg");
$color = imageColorAllocate($im, 0, 0, 0);
$px = (imageSX($im)-6.5*strlen($string))/2;

imageTftText($im, $px, 0, 771, 415, $color, "G:\www\praktika\www\times.ttf", $string);
Header("Content-type: image/jpeg");
imageJpeg($im);
imageDestroy($im);

Но при обращении к скрипту браузер выдаёт белую страницу. В чём загвоздка, что я делаю не так?



Спустя 21 минута, 52 секунды (10.08.2010 - 13:01) linker написал(а):
"G:\www\praktika\www\times.ttf" smile.gif попробуй "G:/www/praktika/www/times.ttf"

Спустя 19 минут, 25 секунд (10.08.2010 - 13:20) AntonMMF написал(а):
Цитата (linker @ 10.08.2010 - 10:01)
"G:\www\praktika\www\times.ttf" smile.gif попробуй "G:/www/praktika/www/times.ttf"

Нет, не получилось sad.gif Сменил название шрифта на new.ttf, но тоже ничего не дало...

Спустя 7 минут, 4 секунды (10.08.2010 - 13:27) sergeiss написал(а):
Смени локальный каталог "G:/www/praktika/www/times.ttf" на "нормальный" путь, относительный или абсолютный. Относительно корня сайта. Локальные пути тут низзя писать.

Спустя 2 часа, 4 минуты, 2 секунды (10.08.2010 - 15:31) AntonMMF написал(а):
Цитата (sergeiss @ 10.08.2010 - 10:27)
Смени локальный каталог "G:/www/praktika/www/times.ttf" на "нормальный" путь, относительный или абсолютный. Относительно корня сайта. Локальные пути тут низзя писать.

Залил на сервер, прописал абсолютный путь - та же фигня. Мож где ещё какие функции прописывать надо???

Спустя 2 минуты, 14 секунд (10.08.2010 - 15:33) sergeiss написал(а):
Покажи, какой именно ты путь прописал.

Спустя 4 минуты, 15 секунд (10.08.2010 - 15:38) AntonMMF написал(а):
Цитата (sergeiss @ 10.08.2010 - 12:33)
Покажи, какой именно ты путь прописал.

imageTftText($im, $px, 0, 771, 415, $color, "/home/blablabla/new.ttf", $string);

через blablabla закрыл полный путь, но суть в этом... абсолютный путь получил через dirname(__FILE__)

Спустя 6 минут, 5 секунд (10.08.2010 - 15:44) sergeiss написал(а):
Ты указываешь путь на диске... И мне кажется, что не правильно это сделал!!!
Напиши вот в таком виде путь к файлу: http://localhost/ПУТЬ/new.ttf (естественно в предположении, что файл находится на сервере со скриптом). Где "путь" - это как раз то, что нам надо узнать.

А когда ты его узнаешь, то используй этот ПУТЬ тут:
imageTftText($im, $px, 0, 771, 415, $color, "ПУТЬ/new.ttf", $string);

или так
imageTftText($im, $px, 0, 771, 415, $color, "http://localhost/ПУТЬ/new.ttf", $string);


PS. А скорее всего, так надо
imageTftText($im, $px, 0, 771, 415, $color, "../ПУТЬ/new.ttf", $string);


Спустя 51 минута, 14 секунд (10.08.2010 - 16:35) AntonMMF написал(а):
Всем спасибо, проблему решил. Оказывается, что текст надо передавать в юникоде (о чём непонятно по какой причине умалчивается в описании функции imageTftText). Надыбал на просторах гугла скрипт, и теперь работающий код выглядит так:


function toUnicodeEntities($text, $from="w") {
$text = convert_cyr_string($text, $from, "i");
$uni = "";
for ($i=0, $len=strlen($text); $i<$len; $i++) {
$char = $text{$i};
$code = ord($char);
$uni .= ($code>175)? "&#" . (1040+($code-176)) . ";" : $char;
}
return $uni;
}

$string = toUnicodeEntities("blablabla");
$font = getcwd()."/times.ttf";
$im = imageCreateFromJpeg("reference1.jpg");
$angle = 0;
$size = 62;
$color = imageColorAllocate($im, 0, 0, 0);

imageTtfText($im, $size, $angle, 770, 500, $color, $font, $string);
Header("Content-type: image/jpeg");
imageJpeg($im);

Спустя 13 дней, 15 часов, 11 минут, 15 секунд (24.08.2010 - 07:46) AntonMMF написал(а):
В продолжение темы с изображениями. А есть ли какие готовые решения для отправки получившегося изображения по почте вложенным файлом?


_____________
Работаю на репутацию (не только на карму, которая в профиле).
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.