Newsgroup: it.comp.lang.perl
Titolo: GD::Simple  moveTO error

Ho trovato un esempio su 
cpansearch.perl.org
 per scrivere su immagini
tramite il modulo GD::Simple cosě come sotto riportato:
#!/usr/bin/perl -w
use GD::Simple;
open (JPG,"prova.jpg") || die;
$myimage = newFromJpeg GD::Image(JPG) || die;
    $myimage->moveTo(50,2200);
    $myimage->font('Times:italic');
    $myimage->fontsize(20);
    $myimage->angle(-90);
    $myimage->string("This is very fancy");
open(PICTURE,">/prova.jpg") or die("impossibile aprire .jpg in scrittura");
binmode PICTURE;
print PICTURE $myimage->jpeg;
close JPG;
close PICTURE;
Ma eseguendolo ottengo l'errore:
Can't locate object method "moveTo" via package "GD::Image" at
./prova.creafile.scritte line 8.
Io utilizzo le GD versione 2.30 che contengono il modulo ::Simple (Simple.pm
č presente sotto la dir GD).
Non ho problemi invece a disegnare pixel linee e rettangoli.
Qualcuno puň dirmi dove č il problema?
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 $myimage = newFromJpeg GD::Image(JPG) || die;
dovrebbe essere invece qualcosa tipo:
my $myimage = GD::Simple->newFromJpeg('prova.jpg') or die;
(la open precedente neanche serve).
P.S.
Usa strict, non usare le chiamate di metodi indirette, usa le parentesi 
nell'invocazione dei metodi ed usa "or die", non "|| die".


--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 utilizza ::Simple) come posso fare?
Va precisato che GD::Simple e GD ti permettono di fare le stesse cose 
(sia pure attraverso interfacce differenti), quindi potresti limitarti 
all'uso di una sola delle due classi per tutte le tue esigenze.
Detto questo, se ti torna comodo usare entrambe le classi, puoi fare cosě:
costruisci l'oggetto GD::Image mediante una delle forme previste:
my $gd_image = GD::Image->new( [$width,$height],[$truecolor] );
my $gd_image = GD::Image->new( *FILEHANDLE );
my $gd_image = GD::Image->new( $filename );
my $gd_image = GD::Image->new( $data );
quindi fai tutte le manipolazioni (pixel, linee ecc.) e poi, quando hai 
finito, costruisci l'oggetto GD::Simple passandone al costruttore il 
predetto oggetto GD::Image, cosě:
my $simple_image = GD::Simple->new( $gd_image );
per le ulteriori manipolazioni attraverso i metodi di GD::Simple (testo 
ecc.)
Sempre che abbia interpretato bene la tua richiesta.
Ciao


--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 nulla ... anche se non dà nessun errore nè warning.
Francamente non so dirti, forse si trattava di una vecchia versione, o 
di un manuale non /autoritativo/ diciamo, perché il POD dell'ultima 
versione non mi sembra proponga quell'approccio:
http://search.cpan.org/~lds/GD-2.41/GD/Simple.pm
Comunque, tutto è bene quel che finisce bene ;-)
Ciao

Grazie Emanuele,
comunque non è finita proprio bene, perchè i punti e le linee riuscivo già
ad inserirli nelle immagini tramite il modulo ::Image, mentre con il modulo
Simple non riesco a scivere nulla (senza errori nè warning.
Ho provato anche l'esempio che hai inserito nel tuo link , ma niente.
Hai un altro metodo da suggerirmi per inserire scritte in una immagine
grande a piacimento?
Riesco ad inserire scritte tramite il modulo ::Image con con la funzione
string(gdLargefont,x,y,"prova") ... ma è sempre troppo piccola.
Il 16 Mar 2009, 19:56, Emanuele Zeppieri
<ema...@tiscali.itsnip_here.invalid> ha scritto:

--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

Ho trovato l'esempio sul sito Cpan per la versione che ho io 2.30 (è uguale
alla 2.41)
http://search.cpan.org/~lds/GD-2.30/GD/Simple.pm
ma non scrive niente. Se commento la riga in cui si setta il font allora
scrive con il font di default ma non rispetta il font size.
Sembra che non carichi il font ... ma non saprei dove controllare e come
caricarlo eventualmente.


 grande a piacimento?
Se non ti bastano le dimensioni massime dei font interni GD, puoi usare 
i font TrueType di sistema (non è la sola opzione, ma per adesso vediamo 
questa).
L'unica cosa è che la libreria (C) GD deve essere compilata col supporto 
per i font TrueType (ma quasi sicuramente lo è).
Qui ti riporto uno script (perfettamente funzionante su GD 2.41) che 
scrive una stringa all'interno di un'immagine, utilizzando il font Arial 
con corpo 36 punti (ma puoi aumentarne la dimensione a piacere), 
andandoselo a caricare dal path canonico di Windows Vista.
Come vedi, il metodo da usare è stringFT (di GD::Image).
Salva lo script e poi lancialo redirigendone l'output su un file con 
estensione png:
perl 
gd_font_test.pl
 > test.png
Se ci sono problemi, siamo qui.
---
# 
gd_font_test.pl
use strict;
use warnings;
use GD;
my $image = GD::Image->new(320, 240);
$image->colorAllocate(255,255,255);
$image->colorAllocate(0,0,0);
$image->stringFT(
     2, '/cygdrive/c/Windows/Fonts/arial.ttf', 36, 0, 2, 40, 'Prova!'
);
binmode STDOUT;
print $image->png;

OK, io lavoro sotto linux, ma ho scaricato il font arial e l'ho inserito con
path assoluto e funziona!
Grazie mille!!!!
Il 17 Mar 2009, 12:51, Emanuele Zeppieri
<ema...@tiscali.itsnip_here.invalid> ha scritto:

--------------------------------
Inviato via 
http://arianna.libero.it/usenet/