RuCable
Создание изображений в GD (PERL)

В этой статье я постараюсь разобрать создание изображений в библиотеке GD с помощью PERL интерпретатора. Для того чтобы убедиться, что библиотека GD установлена на Вашем сервере, создайте простой скрипт, с названием test.pl

#!/usr/bin/perl
print "Content-type: text/html\n\n";
use GD;
1;

Сохраните файл, убедитесь что он имеет права на запуск(chmod +x test.pl), и далее попробуйте запустить этот скрипт через Shell

./test.pl

или в строке браузера

http://www.other-host.ru/test.pl

Если скрипт выдал пустую страничку, то у Вас установленна библиотека GD и можно продолжить дальше. Если все же появились собщения, примерно такого вида:

Can't locate GD.pm in @INC (@INC contains:
/usr/local/lib/perl5/site_perl/5.8.5/mach
/usr/local/lib/perl5/site_perl/5.8.5
/usr/local/lib/perl5/site_perl
/usr/local/lib/perl5/5.8.5/BSDPAN
/usr/local/lib/perl5/5.8.5/mach
/usr/local/lib/perl5/5.8.5 .) at ./test.pl line 3.
BEGIN failed--compilation aborted at ./test.pl line 3.

Это говорит о том, что требуется установить вышеназванную библиотеку на сервер. Так как эта библиотека требует так же другие библиотеки, Вам необходимо просить об установке GD Вашего системного администратора.

Создание изображения в GD

Мы попробуем создать простое изображение, и залить его например белым цветом:

#!/usr/bin/perl
use strict;
use GD;
#инициализируем переменные
my ($img, $red, $blue, $white, $black);

#Создаем новую картинку с размерами 100x100 (width X height);
$img = new GD::Image(100,100);

#Создаем белый цвет. Он нужен для работы (R,G,B)
$white = $img->colorAllocate(255,255,255);

#Создаем красный цвет (R,G,B)
$red = $img->colorAllocate(255,0,0);

#Создаем синий цвет (R,G,B)
$blue = $img->colorAllocate(0,0,255);

#Создаем черный цвет (R,G,B)
$black = $img->colorAllocate(0,0,0);

#Рисуем окантовку по краю квадрата синего цвета
$img->rectangle(0,0,99,99,$blue);

#Заливаем квадрат белым цветом
$img->fill(50,50,$white);

#Выводим изображение в браузер
binmode STDOUT;
print "Content-type: image/png\n\n";
print $img->png;
exit;

У нас получится следующая картинка: http://www.rucable.net/cgi-bin/gd-image-test.pl

Теперь давайте сделаем надпись на этой картинке:

#!/usr/bin/perl
use strict;
use GD;
#инициализируем переменные
my ($img, $red, $blue, $white, $black, $green);

#Создаем новую картинку с размерами 100x100 (width X height);
$img = new GD::Image(100,100);
$white = $img->colorAllocate(255,255,255);
$red = $img->colorAllocate(255,0,0);
$blue = $img->colorAllocate(0,0,255);
$green = $img->colorAllocate(0,255,0);
$black = $img->colorAllocate(0,0,0);
$img->rectangle(0,0,99,99,$blue);
$img->fill(50,50,$white);

#Пишем фразу Hello world
$img->string(GD::Font->Tiny,36,15,'Hello world!', $black);
binmode STDOUT;
print "Content-type: image/png\n\n";
print $img->png;
exit;
У нас получится следующая картинка: http://www.rucable.net/cgi-bin/gd-image-test-with-text.pl
Дополнительные размеры шрифтов:

Просто добавьте в код после #Пишем фразу Hello world
#Giant, Large, MediumBold, Small Tiny.
$img->string(GD::Font->Tiny,10,10,'Tiny FONT', $red);
$img->string(GD::Font->Large,10,20,'Large FONT', $black);
$img->string(GD::Font->MediumBold,10,40,'MediumBold', $blue);
$img->string(GD::Font->Small,10,55,'Small FONT', $black);
$img->string(GD::Font->Giant,10,75,'Giant FONT', $green);

Просмотрим изображение? http://www.rucable.net/cgi-bin/gd-image-test-with-text-advanced.pl

Стало интересно как создавать изображения?
Читайте далее о других опциях GD библиотеки через шелл набрав команду #man GD
так же можно посетить OnLine версию справки GD библиотеки от CPAN

К справке: мы предоставляем хостинг с предустановленными опциями GD, в чем Вы уже убедились просмотрев выше картинки созданные на этом сервере. Все наши сервера, которые обслуживают виртуальный хостинг, имеют предустановленное программное обеспечение библиотек PERL для создания изображений в GD.

Текущая версия PERL: http://www.rucable.net/cgi-bin/test-perl-version.pl This is perl, v5.8.9 built for amd64-freebsd (with 1 registered patch, see perl -V for more detail) Copyright 1987-2008, Larry Wall Perl may be copied only under the terms of either the Artistic License or the GNU General Public License, which may be found in the Perl 5 source kit. Complete documentation for Perl, including FAQ lists, should be found on this system using "man perl" or "perldoc perl". If you have access to the Internet, point your browser at http://www.perl.org/, the Perl Home Page.