- Home
- Categorie
- Coding e Sistemistica
- PHP
- Creare thumbnails da gif o jpg
-
Creare thumbnails da gif o jpg
Ciao a tutti!
Ho fatto qualche ricerca su giorgiotave ma non ho trovato niente..
Avrei bisogno di uno script che mi ridimensiona un immagine gif o jpg, a seconda dell'url che gli passo..
Quindi ad esempio, io gli passo come parametro http://blabla/immagine.gif di una qualsiasi larghezza, e lui mi crea la thumbnail con larghezza fissa a 150px e altezza di conseguenza, mantenendo le proporzioni..
Ps. sto testando in locale con gd2 installate..
grazie e ciauzz
-
Qui => http://www.php.net/manual/it/ref.image.php
trovi tutte le funzioni relative alle immagini
-
Allora,
ho modificato uno script che uso io (in cui faccio anche operazioni diverse)
fammi sapere se per le tue esigenze va beneGD2 necessarie
[php]
//questa è la funzione
//come parametri devi passare
// $src -> è il file di origine (l'immagine principale)
// $nuovo_nome -> è il nome che vuoi dare alla nuova immagine rimpicciolita
// $w -> larghezza massima
// $h -> altezza massima
//lo script individua quale dei due parametri (altezza o larghezza) è superiore ai limiti impostati e riduce l'immagine originaria in proporzionefunction resize($src,$nuovo_nome,$w,$h) {
//recupero informazioni sull'immagine $size = getimagesize($src);
//individuo il formato (jpeg, gif, png)
if( $size[2] == 2 ){ $im = @imagecreatefromjpeg($src); }elseif( $size[2] == 1 ){ $im = @imagecreatefromgif($src); }
elseif( $size[2] == 3 ){ $im = @imagecreatefrompng($src); }
//recupero dimensioni immagine
$newwidth = $size[0];
$newheight = $size[1];//procedo con l'immagine
if( $newwidth > $w ){
$newheight = ($w / $newwidth) * $newheight;
$newwidth = $w;
}
if( $newheight > $h ){
$newwidth = ($h / $newheight) * $newwidth;
$newheight = $h;
}if( $size[2] != 1 ){ $new = imagecreatetruecolor($newwidth, $newheight); imagecopyresampled($new, $im, 0, 0, 0, 0, $newwidth, $newheight, $size[0], $size[1]); } else{ $new = imagecreate($newwidth, $newheight); imagecopyresized($new, $im, 0, 0, 0, 0, $newwidth, $newheight, $size[0], $size[1]); }
if( $size[2] == 2 ){
$ext = ".jpg"; @imagejpeg($new,$nuovo_nome."".$ext, 80); }
elseif( $size[2] == 1 ){
$ext = ".gif"; @imagegif($new,$nuovo_nome."".$ext); }
elseif( $size[2] == 3 ){
$ext = ".png"; @imagepng($new,$nuovo_nome."".$ext); }
//output di prova dell'immagine (puoi cancellarlo una volta verificatone il funzionamento
echo "Ecco l'immagine<br><img src='".$nuovo_nome."".$ext."'>";}
//richiama la funzione e poi verifica che ti abbia creato il file
//io ho testato sempre con gd2 e funzionaresize("nomedelfile.jpg","nomechevuoidarealthumbsenzaestensione","150","150");
[/php]
fammi sapere
-
Grazie per la gentilezza.. allora ho semplicemente sostituito i valori quindi non dovrei aver fatto errori, però non mi stampa niente.. però non da neppure alcun errore..
Cosa può essere?
Ciauzz
-
controlla che sia tutto in regola:
- GD2
- percorsi del file
-
Pardon, errore mio.. E' che io avevo frainteso il funzionamento delle thumbnail, a me bastava semplicemente che venisse ridimensionata l'immagine mantenendo le proporzioni, non che ne venisse proprio creata una nuova..
In ogni caso va benissimo così, soltanto una cosa: è possibile scegliere la directory nella quale vanno create le immagini?
Grazie ciaoo:D
-
@Supernova said:
Pardon, errore mio.. E' che io avevo frainteso il funzionamento delle thumbnail, a me bastava semplicemente che venisse ridimensionata l'immagine mantenendo le proporzioni, non che ne venisse proprio creata una nuova..
In ogni caso va benissimo così, soltanto una cosa: è possibile scegliere la directory nella quale vanno create le immagini?
Grazie ciaoo:D
certo, ti basta aggiungere una variabile in cui passi il nome della cartella dove vuoi che vengano create
-
Ecco la funzione modificata con in più la cartella:
[php]
//questa è la funzione
//come parametri devi passare
// $src -> è il file di origine (l'immagine principale)
// $cartella -> è il nome della cartella dove creare l'immagine
// $nuovo_nome -> è il nome che vuoi dare alla nuova immagine rimpicciolita
// $w -> larghezza massima
// $h -> altezza massima
//lo script individua quale dei due parametri (altezza o larghezza) è superiore ai limiti impostati e riduce l'immagine originaria in proporzionefunction resize($src,$cartella,$nuovo_nome,$w,$h) {
//recupero informazioni sull'immagine $size = getimagesize($src);
//individuo il formato (jpeg, gif, png)
if( $size[2] == 2 ){ $im = @imagecreatefromjpeg($src); }elseif( $size[2] == 1 ){ $im = @imagecreatefromgif($src); }
elseif( $size[2] == 3 ){ $im = @imagecreatefrompng($src); }
//recupero dimensioni immagine
$newwidth = $size[0];
$newheight = $size[1];//procedo con l'immagine
if( $newwidth > $w ){
$newheight = ($w / $newwidth) * $newheight;
$newwidth = $w;
}
if( $newheight > $h ){
$newwidth = ($h / $newheight) * $newwidth;
$newheight = $h;
}if( $size[2] != 1 ){ $new = imagecreatetruecolor($newwidth, $newheight); imagecopyresampled($new, $im, 0, 0, 0, 0, $newwidth, $newheight, $size[0], $size[1]); } else{ $new = imagecreate($newwidth, $newheight); imagecopyresized($new, $im, 0, 0, 0, 0, $newwidth, $newheight, $size[0], $size[1]); }
if( $size[2] == 2 ){
$ext = ".jpg"; @imagejpeg($new,$cartella."/".$nuovo_nome."".$ext, 80); }
elseif( $size[2] == 1 ){
$ext = ".gif"; @imagegif($new,$cartella."/".$nuovo_nome."".$ext); }
elseif( $size[2] == 3 ){
$ext = ".png"; @imagepng($new,$cartella."/".$nuovo_nome."".$ext); }
//output di prova dell'immagine (puoi cancellarlo una volta verificatone il funzionamento
echo "Ecco l'immagine<br><img src='".$cartella."/".$nuovo_nome."".$ext."'>";}
//richiama la funzione e poi verifica che ti abbia creato il file
//io ho testato sempre con gd2 e funzionaresize("nomedelfile.jpg","nomecartellasenzaslash","nomechevuoidarealthumbsenzaestensione","150","150");
[/php]
-
Ok ho capito.. sei un mito, di nuovo grazie mille di tutto:D
Ciauzz
-