-
Gd library
Ciao a tutti, sono nuovo al forum e ad altervista.
Sto provando a metter su uno script per aggiungere un testo ad un'immagine e ho letto che dovrebbe essere molto facile farlo con le gd library di php. Ho visto su vecchi post sul forum che le librerie sono istallate qui su altervista e, lanciando gd_info() come suggerito dalla documentazione, sembra essere tutto attivo e riconosciuto.
Come mai non riesco a visualizzare nulla quando uso le librerie? Ho copiato un esempio, in realtà ne ho provati tanti .. tutti con lo stesso esito negativo. il codice della mia pagina è il seguente:
Codice PHP:
<html>
<head>
<title>
<?php
echo "Pagina di prova PHP";
?>
</title>
</head>
<body>
<?php
echo "Buona giornata!";
header ('Content-Type: image/png');
$im = imagecreatetruecolor(120, 20)
or die('Cannot Initialize new GD image stream');
$text_color = imagecolorallocate($im, 233, 14, 91);
imagestring($im, 1, 5, 5, 'A Simple Text String', $text_color);
imagepng($im);
imagedestroy($im);
?>
</body>
</html>
Sapete dirmi come mai non visualizzo null'altro che un quadratino col punto interrogativo al centro?
Grazie mille
-
Perchè stai mischiando un po' le cose.
Il codice per generare l'immagine è corretto ma non devi mettere null'altro (HTML).
Il codice genera il binario del file dell'immagine, non puoi scriverlo come qualunque elemento HTML.
Inserisci in una pagina un elemento img e come src metti una pagina php (ad esempio immagine.php) che contenga il solo codice (da header ... a imagedestroy.
Prova così
crea una pagina HTML (o anche PHP), ad esempio pagina.html
Codice PHP:
<html>
<head>
<title>Pagina di prova PHP</title>
</head>
<body>
Buona giornata!<br />
<img src="immagine.php" alt="" />
</body>
</html>
e poi la pagina PHP che si occupa della generazione dell'immagine, nell'esempio immagine.php
Codice PHP:
<?php
header ('Content-Type: image/png');
$im = imagecreatetruecolor(120, 20)
or die('Cannot Initialize new GD image stream');
$text_color = imagecolorallocate($im, 233, 14, 91);
imagestring($im, 1, 5, 5, 'A Simple Text String', $text_color);
imagepng($im);
imagedestroy($im);
?>
-
oooohhhh ... ora è tutto molto più chiaro!
Grazie infinite vplaza
-
Approfitterei delle tue conoscenze per sottoporti anche questo problema.
Sto provando a caricare un'immagine di base (alla quale poi sovraimporre una scritta) usando questo pezzo di codice:
Codice PHP:
$im = imagecreatefromjpeg("../IMM/M80_thumb.jpg");
if(!$im)
$im = imagecreatetruecolor(400, 100);
e il php entra sempre dentro l'if e mi crea l'immagine con lo sfondo nero, non caricandomi quindi l'immagine. Ho provato anche inserendo tutto l'url completo, ma mi dà lo stesso problema.
Hai idea di come possa risolvere??
Il codice completo, se vuoi provarlo è il seguente:
Codice PHP:
<?php
// Create a blank image and add some text
$im = imagecreatefromjpeg("../IMM/M80_thumb.jpg");
if(!$im)
$im = imagecreatetruecolor(400, 100);
$text_color = imagecolorallocate($im, 233, 14, 91);
imagestring($im, 5, 100, 50, 'A Simple Text String', $text_color);
// Set the content type header - in this case image/jpeg
header('Content-Type: image/jpeg');
// Output the image
imagejpeg($im);
// Free up memory
imagedestroy($im);
?>
-
Quell'immagine, esiste?
Verificalo con file_exists().
Ciao!
-
Hai ragione, il file non esiste ...
ma se vado all'url http://imagegenerator.altervista.org/IMM/M80_thumb.jpg il file lo vedo ...
il codice non mi funziona nemmeno se metto tutto l'url completo
$im = imagecreatefromjpeg("http://imagegenerator.altervista.org/IMM/M80_thumb.jpg");
come faccio qui in altervista a raggiungere un file che sta in /IMM/nome_file.ext ?? se provo file_exists("/IMM/nome_file.ext") mi dice che non c'è ...
-
Molto probabilmente sbagli con il percorso:
Percorsi assoluti:
"/" è riferito alla root del tuo spazio, quindi per selezionare un file nella cartella principale devi fare "/membri/file.est"
Se invece specifichi tutto l'indirizzo, lo script lo vede come file "esterno", quindi in questo caso devi abilitare la connessione server2server per poterlo raggiungere da script.
Per i percorsi relativi (che ti consiglio):
"./" significa "cartella corrente", mentre "../" significa cartella superiore.
Se non hai capito bene, vedi qui (secondo elenco numerato).
Ciao!
-
ok, ho risolto ... è bastato usare il path relativo ./IMM/nome_file.est .. strano che l'altro non funzionasse, perché la cartella IMM è all'interno della mia root .. quindi credevo fosse in /IMM/nome_file.est ... e invece forse tra la root e IMM c'è qualcosa in mezzo..
Comunque grazie! Adesso funziona alla grande ;)
-
Come ti ho detto prima, tra la root e IMM c'é /membri/ (o a volte /membri2/).
Ciao!