Автор Тема: GD  (Прочитано 6385 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн AnnA

  • Фанатка форума
  • Старожил
  • ****
  • Сообщений: 263
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
GD
« : 03 Февраля 2005, 21:07:40 »
скажите, как его научить печатать текст?
у хостера все нормально. не просто печатает, а даже русский может...
У меня стоит GD 2.06:
1.
use cyrillic qw/convert detect win2utf/;
use 
GD;

my $ru = \'Русский Текст - win1251\';
my $en = \'English Text - win1251\';

my $im = new GD::Image(200,120);
.......

#вывод:
my $char = detect($ru);
my $str_ru  = convert( $char, \'utf\', $ru );
my $str_en  = convert( $char, \'utf\', $en );

#или так
#my $str_ru = win2utf($ru);
#my $str_ru = win2utf($en);

$im->stringTTF($gold,$font,10,0,7,13,$str_ru);
$im->stringTTF($white,$font,10,0,7,42,$str_en);

binmode STDOUT;

print "Content-type: image/jpeg\\n\\n";
print $im->jpeg();

Символы на картинке: 
в ДВУХ строках. Т.е. не печатается даже английский текст.

2. тот же код, но без use cyrillic qw/convert detect win2utf/; в слабенькой надежде получить хотя бы английские буковки. увы. надежда не оправдалась.

3,4... вариантов еще было много. ;) не буду их все описывать они не увенчались успехом. Хотя, скажу честно, так я и не додумалась выводить бинарную картинку с заголовками "Content-type: text/html\\n\\n", как тут один «знающий» господин подсказывал в топике про ;)
пока-пока. :)

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
GD
« Ответ #1 : 03 Февраля 2005, 22:14:57 »
Нет у тебя подключенных фонтов.
Пробуй использовать GD::Text
Заодно покажи что в $font
The documentations is your friend

Оффлайн AnnA

  • Фанатка форума
  • Старожил
  • ****
  • Сообщений: 263
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
GD
« Ответ #2 : 04 Февраля 2005, 11:02:10 »
вчера так и не удалось прорваться на форум. висел он что ли? :)
==
я пробовала и полные пути и относительные прописывать - это ничего не меняет. результат тот же. не в этом дело.
$font = \'verdana.ttf\'; лежит тут же, где и шрифт. причём, если дать, например $font = \'arial.ttf\'; (ну или там, например, garamond.ttf) - выводимые кубички несколько видоизменяются. Т.е. можно сделать вывод, что файлы шрифтов скрипт находит. Еще и потому, что, когда он их не находит, - на картинке нет ничего и в логе есть сообщение о невозможности прочесть файл такой-то.
В моем же случае лог совершенно пустой. :(
GD::Text ага. Я пробовала. Еще утром сегодня. глядите:C:\\Program Files\\Far>ppm install GD::Text
Installing package \'GD-Text\'...
Error installing package \'GD-Text\': Could not locate a PPD file for package GD-Text

C:\\Program Files\\Far>perl -v
This is perl, v5.6.1 built for MSWin32-x86-multi-thread
............

C:\\Program Files\\Far>ppm query GD
GD                 [2.06] Interface to Gd Graphics Library
Image-GD-Thumbnail [0.02] produce thumbnail images with GD
ppm set
Current PPD repository paths:
        ActiveState Package Repository: [url]http://ppm.ActiveState.com/cgibin/PPM/ppmserver.pl[/url]
?urn:/PPMServer

Не будет мне счастья, с этой затеей, да?
==
пока-пока. :)

Оффлайн AnnA

  • Фанатка форума
  • Старожил
  • ****
  • Сообщений: 263
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
GD
« Ответ #3 : 04 Февраля 2005, 11:04:47 »
можно просто сохранить этот http://search.cpan.org/src/MVERB/GDTextUtil-0.86/Text.pm
а в скрипте использовать через use lib ....... да?
сейчас попробую.
пока-пока. :)

Оффлайн AnnA

  • Фанатка форума
  • Старожил
  • ****
  • Сообщений: 263
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
GD
« Ответ #4 : 04 Февраля 2005, 12:05:44 »
нет. это не работает. просто пустая картинка, пустой лог...
никто не знает как заставить модуль GD печатать буковки?
пока-пока. :)

Оффлайн Phoinix

  • RW
  • Ветеран
  • *****
  • Сообщений: 1097
  • +0/-0
  • 2
    • Просмотр профиля
    • http://phoinix.ucoz.ru
GD
« Ответ #5 : 04 Февраля 2005, 12:11:15 »
AnnA

Цитировать
можно просто сохранить этот http://search.cpan.org/src/MVERB/GD...il-0.86/Text.pm


Сомневаюсь... подключи в ppm репозитарий
http://theoryx5.uwinnipeg.ca/ppmpackages/

Установи пакет GDTextUtil и будет счастье...

Оффлайн AnnA

  • Фанатка форума
  • Старожил
  • ****
  • Сообщений: 263
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
GD
« Ответ #6 : 04 Февраля 2005, 12:43:38 »
добавила, установила, а счастья всё нет. ;)
Вы, совершенно случайно, не в курсе как в нём можно(?) задать ЦВЕТ выводимых буковок. Как задать координаты - разобралась с горем пополам. (хотя пока не очень-то это и помогло...)
пока-пока. :)

Оффлайн Phoinix

  • RW
  • Ветеран
  • *****
  • Сообщений: 1097
  • +0/-0
  • 2
    • Просмотр профиля
    • http://phoinix.ucoz.ru
GD
« Ответ #7 : 04 Февраля 2005, 12:53:29 »
AnnA

Случайно в курсе...


     
...
     use 
GD; use GD::Text::Wrap;
     
my $image = new GD::Image($user_vars{\'image_x\'}, $user_vars{\'image_y\'});
# Вот здесь, как раз опеределяются цвета
     my $bground = $image->colorAllocate(hex(substr($user_vars{\'bground\'},1,2)),hex(substr($user_vars{\'bground\'},3,2)),hex(substr($user_vars{\'bground\'},5,2)));
     my $border = $image->colorAllocate(hex(substr($user_vars{\'border\'},1,2)),hex(substr($user_vars{\'border\'},3,2)),hex(substr($user_vars{\'border\'},5,2)));
     my $textcolor = $image->colorAllocate(hex(substr($user_vars{\'textcolor\'},1,2)),hex(substr($user_vars{\'textcolor\'},3,2)),hex(substr($user_vars{\'textcolor\'},5,2)));

    $image -> fill(5,5,$bground); $image -> rectangle(0,0,($user_vars{\'icon_x\'} - 1),($user_vars{\'icon_y\'} - 1),$border);

    my $string = \'blablabla\';
    my $text = GD::Text::Wrap -> new($image, line_space => 1, color => $textcolor, text => $string,);
    $text->set_font(\'tahoma.ttf\', $user_vars{\'size\'});
    $text->set(align => \'center\', width => $user_vars{\'textwidth\'});
    $text->draw($user_vars{\'text_x\'},$user_vars{\'text_y\'});

     my $file = \'./image.png\';
     open (IMG, ">$file");
     print IMG $image->png;
     close IMG;
    ...


Надеюсь все понятно...
Практически полный набор манипуляций с текстом...

P.S. $user_vars{\'bground\'} - формат FAFAFA без решетки, в общем, определение как в HTML

Оффлайн AnnA

  • Фанатка форума
  • Старожил
  • ****
  • Сообщений: 263
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
GD
« Ответ #8 : 04 Февраля 2005, 14:24:52 »
пасиба Phoinix, пасиба NeoNox. :)
в общем и целом - полдня потрачено зря - пришла к тому, с чего начала:
1. для вывода английского текста пользуемся "старой доброй"
$im->string(gdSmallFont,......); это работает всегда и везде,
о кириллице под виндовс забываем напрочь.
2. GDTextUtil - удалила: бестолковый модуль. "обёртка" :) Пользы никакой, а писанины добавилось.
3. http://www.bribes.org/perl/ppm/ лежит версия GD 2.19!
в том числе и для Perl 5.6..
поставлю - буду пробовать печатать все-таки своим шрифтом, а не системным и русскими буковками.
 
всем хороших выходных.
пока-пока. :)

Оффлайн AnnA

  • Фанатка форума
  • Старожил
  • ****
  • Сообщений: 263
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
GD
« Ответ #9 : 04 Февраля 2005, 15:12:15 »
вот теперь ВСЁ работает!
очень рекомендую обновить версию модуля до 2.19.
нужно установить еще cyrillic и будет печатать по-русски под виндой! ;)
он, кстати, теперь работает с гифами, с анимированными гифами и даже с альфа-каналом(прозрачность в гиф и пнг)!
а что касается позиционирования текста - он же (даже в старых версиях) всегда отдаёт:
         @bounds[0,1]  Lower left corner (x,y)
         @bounds[2,3]  Lower right corner (x,y)
         @bounds[4,5]  Upper right corner (x,y)
         @bounds[6,7]  Upper left corner (x,y)
пока-пока. :)

Оффлайн vladsu

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 271
  • +0/-0
  • 0
    • Просмотр профиля
    • http://vladislavsurguchev.eu/
GD
« Ответ #10 : 04 Февраля 2005, 16:08:53 »
AnnA

Может с Вами книжкой поделиться этой

Graphics Programming with Perl
----------------------------------------------
Мой сайт чёрно-белых фотографий из разных уголков мира тут

Оффлайн Phoinix

  • RW
  • Ветеран
  • *****
  • Сообщений: 1097
  • +0/-0
  • 2
    • Просмотр профиля
    • http://phoinix.ucoz.ru
GD
« Ответ #11 : 04 Февраля 2005, 19:42:39 »
AnnA

Цитировать
очень рекомендую обновить версию модуля до 2.19.


C:\\Program Files\\Far>perl -v
This is perl, v5.6.1 built for MSWin32-x86-multi-thread

Это я бы тоже рекомендовал обновить...

Оффлайн AnnA

  • Фанатка форума
  • Старожил
  • ****
  • Сообщений: 263
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
GD
« Ответ #12 : 04 Февраля 2005, 20:30:13 »
vladsu а она у Вас на каком языке? ;)
Phoinix и до какой версии, интересно. До 5.8?
заодно с рекомендацией, не подскажете зачем обновляться до версии под которой не работают столько модулей? ;) Среди которых: CGI-Compress-Gzip, например. И, Вы будете смеятся, но GD 2.19 тоже в этом списке есть...
Нет уж, спасибо, я пока подожду. Тем более, что в этом наши мысли совпадают с моим хостером.
пока-пока. :)

Оффлайн Phoinix

  • RW
  • Ветеран
  • *****
  • Сообщений: 1097
  • +0/-0
  • 2
    • Просмотр профиля
    • http://phoinix.ucoz.ru
GD
« Ответ #13 : 05 Февраля 2005, 10:26:29 »
AnnA
Цитировать
и до какой версии, интересно. До 5.8?

Естественно...

Цитировать
заодно с рекомендацией, не подскажете зачем обновляться до версии под которой не работают столько модулей?

Странный вопрос... И сколько из них используются в твоей работе?

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

P.S. Ради интереса посмотрел версию модуля GD на своем локальном компьютере:

package GD;
...
$VERSION = "2.19";


C:\\perl -v
This is perl, v5.8.4 built for MSWin32-x86-multi-thread

Кто ищет, тот всегда найдет.
Дальше комментарии я думаю излишни...

Оффлайн AnnA

  • Фанатка форума
  • Старожил
  • ****
  • Сообщений: 263
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
GD
« Ответ #14 : 07 Февраля 2005, 11:35:43 »
Цитировать
Phoinix:
Не буду навязываться

Вот это правильное решение. :)
Цитировать
Phoinix:
Дальше комментарии я думаю излишни...

ага. совершенно излишни. ;) спасибо только за плохую рекомендацию. и.. правда-правда, обещаю со своей ленью разобраться сама. Ну а хостер - ему, наверное видней
Цитировать
Phoinix:
И сколько из них используются
в работе всех сайтов, которые он поддерживает. ;)
пока-пока. :)

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28