Forum Webscript.Ru
Программирование => Perl => Тема начата: Serchey от 11 Октября 2002, 13:45:50
-
Всем привет!
У меня возник вопрос - как на рейтинг-баннерах типа Mail.ru и т.д. пишут, а точнее, динамически рисуют цифры? Мож ImageMagick-om? Если да, то каким образом? (Желательно примерчик)
-
Я для этого использовал 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;
-
Здесь недавно бегали вопросы по поводу шрифтов и GD... Похоже, что где-то тут собака порылась. :)
http://search.cpan.org/modlist/Graphics
-
NeoNox, списибо. Приблизительно я понял. Но в твоем примере я не увидел фона. Как с ним быть?
-
Если нужен сложный фон (картинка), то в GD::Image есть набор функций типа GD::Image->newFrom*, которые создают новое изображение из файла. А потом с ним можно дальше работать.
-
Но в твоем примере я не увидел фона. Как с ним быть?
$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);