вопрос знатокам Perl...

NET_Stranger

Хочу с помощью GD на картинке сделать надпись "Hello, moto!". Вот код:
#!/usr/bin/perl
use strict;
use GD;
use GD::Graph::lines;
no strict 'subs';
$image = GD::Graph::lines->new (800, 300);
#...............
#тут много кода по обработке $image...
#..............
#$image готов, теперь делаю на нем надпись:
my $white = $image->colorAllocate(255,255,255);
my $black = $image->colorAllocate(0,0,0);
$image->arc(50, 50, 95, 75, 0, 360, $black);
$image->fillToBorder(50,50,$black,$white);
$image->string(gdMediumBoldFont, 10, 45, "Hello, moto!", $black);
#Вывожу в броузер то, что получилось:
print "Content-type: image/png\n\n";
binmode STDOUT;
print $image->png;
ПРОБЛЕМА: Данный пример работал бы только в случае определения $image как:
open(PNG, "map/minimap.png") || die "$!";
my $image = newFromPng GD::Image(PNG) || die "$!";
close PNG;
Т.е. как я понимаю, нужно переопределить тип $image, вот только подскажите мне как?

Maverick-I

Я бы сначала сделал то же самое непосредственно с GD:
$image = GD::Image->new;
и вывести не в STDOUT (веб-сервер ничего там не перекодирует по ходу дела? а в файл - и посмотреть, чо оно там нахерачило.

NET_Stranger

сразу говорю, я не программер, вот что мне выдал перл:
Global symbol "$image" requires explicit package name at my_img.pl line 9 ($image = GD::Image->new(800, 300); ).

Maverick-I

my $image = ...

NET_Stranger

краткая формулировка вопроса:
есть $image = GD::Graph::lines->new ;
делаем $image->plot а потом хотим сделать $image->string(gdMediumBoldFont, 10, 45, "Hello, moto!", $black); свойственный для $image = GD::Image->new; но не для $image = GD::Graph::lines->new ;
Ошибка:: Can't locate object method "set" via package "GD::Image"

eduard615

ну дык ведь написано, что нет метода set в пакете GD::Image.
my $img = new GD::Image($image->png);
$img->string(...);
?

VitMix

Может быть так?


$image = GD::Graph::lines->new ;
...
$gdimage = $image->plot (...);
$gdimage->string(gdMediumBoldFont, 10, 45, "Hello, moto!", $black);
print "Content-type: image/png\n\n";
binmode STDOUT;
print $gdimage->png;


Иными словами GD::Graph::lines и GD::Image это совсем разные объекты.

NET_Stranger

всем пасиба
Оставить комментарий
Имя или ник:
Комментарий: