• User Attivo

    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:ciauz:


  • User

    Qui => http://www.php.net/manual/it/ref.image.php

    trovi tutte le funzioni relative alle immagini 😉


  • User

    Allora,

    ho modificato uno script che uso io (in cui faccio anche operazioni diverse)
    fammi sapere se per le tue esigenze va bene 😉

    GD2 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 proporzione

    function 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 funziona

    resize("nomedelfile.jpg","nomechevuoidarealthumbsenzaestensione","150","150");

    [/php]

    fammi sapere 😉


  • User Attivo

    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:ciauz:


  • User

    controlla che sia tutto in regola:

    • GD2
    • percorsi del file

  • User Attivo

    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


  • User

    @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 😉


  • User

    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 proporzione

    function 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 funziona

    resize("nomedelfile.jpg","nomecartellasenzaslash","nomechevuoidarealthumbsenzaestensione","150","150");
    [/php]


  • User Attivo

    Ok ho capito.. sei un mito, di nuovo grazie mille di tutto:D

    Ciauzz:ciauz:


  • User

    @Supernova said:

    Ok ho capito.. sei un mito, di nuovo grazie mille di tutto:D

    Ciauzz:ciauz:

    figurati 😉