Forum Webscript.Ru

Программирование => Perl => Тема начата: Serchey от 11 Октября 2002, 13:45:50

Название: Баннеры и прочие глупости...
Отправлено: Serchey от 11 Октября 2002, 13:45:50
Всем привет!
У меня возник вопрос - как на рейтинг-баннерах типа Mail.ru и т.д. пишут, а точнее, динамически рисуют  цифры? Мож ImageMagick-om? Если да, то каким образом? (Желательно примерчик)
Название: Баннеры и прочие глупости...
Отправлено: NeoNox от 11 Октября 2002, 14:09:45
Я для этого использовал GD. perldoc GD

         use GD;
           #Цвет буковок, циферок
           $peach = $im->colorAllocate(125,190,255);
           # create a new image
           $im = new GD::Image(100,100);

           $im->string(gdSmallFont,2,10,"Peachy Keen",$peach);
           # make sure we are writing to a binary stream
           binmode STDOUT;

           # Convert the image to PNG and print it on standard output
           print $im->png;
Название: Баннеры и прочие глупости...
Отправлено: mike от 11 Октября 2002, 14:10:42
Здесь недавно бегали вопросы по поводу шрифтов и GD... Похоже, что где-то тут собака порылась. :)

http://search.cpan.org/modlist/Graphics
Название: Баннеры и прочие глупости...
Отправлено: Serchey от 11 Октября 2002, 17:12:25
NeoNox, списибо. Приблизительно я понял. Но в твоем примере я не увидел фона. Как с ним быть?
Название: Баннеры и прочие глупости...
Отправлено: mike от 11 Октября 2002, 17:45:23
Если нужен сложный фон (картинка), то в GD::Image есть набор функций типа GD::Image->newFrom*, которые создают новое изображение из файла. А потом с ним можно дальше работать.
Название: Баннеры и прочие глупости...
Отправлено: NeoNox от 11 Октября 2002, 17:55:07
Цитировать
Но в твоем примере я не увидел фона. Как с ним быть?

$im = new GD::Image(171,151);

######Вставляем картинку
  open (PNG,"stat1.png") || die;
  $im = newFromPng GD::Image(\\*PNG) || die;
  close PNG;
######

# Выбираем цвета
$white = $im->colorAllocate(255,255,255);
$black = $im->colorAllocate(0,0,0);      
$red = $im->colorAllocate(255,0,0);      
$blue = $im->colorAllocate(0,0,255);
$fon = $im->colorAllocate(125,190,255);
$reshetka = $im->colorAllocate(170,170,170);
$kislota = $im->colorAllocate(0,255,0);
$silver = $im->colorAllocate(128,128,128);

$im->transparent($silver);
$im->interlaced(\'true\');

$im->rectangle(0,0,169,149,$black);
$im->rectangle(0,10,169,140,$black);
$im->filledRectangle(70,12,80,17,$kislota);
$im->filledRectangle(120,12,130,17,$red);
$im->string(gdTinyFont,82,11,"-HITS",$black);
$im->string(gdTinyFont,132,11,"-HOSTS",$black);