Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    195

    Creazione thumbnails, problema di definizione

    Salve ragazzi, ho qualche problema con la creazione delle thumbnails. Uso questo script che ho trovato sul web:
    Codice PHP:
    $nomeimage $Img1_Nome;
      
    #creazione preview con GD library
      
    $new_width=130;      //Larghezza immagine ridimensionata
      
    $new_height=90;      //Altezza immagine ridimensionata
      
    $ncompression=10;      //Compressione dell'immagine jpg
      
    $source_path="$abpath"."uploads/";      //Diretory dove si trova il file di cui volgiamo fare la preview
      
    $destination_path="$abpath"."uploads/thumbs/";      //diretory dove vogliamo salvare l'immagine di preview
      
          
    global $source_path;
          global 
    $destination_path;
          global 
    $new_width;
          global 
    $new_height;
          
    $destimg=ImageCreate($new_width,$new_height) or die("Problemi nelle creazioni dell'immagine");
          
    $srcimg=ImageCreateFromJPEG($source_path.$nomeimage) or die("Problemi nell'aprire l'immagine");
          
    ImageCopyResized($destimg,$srcimg,0,0,0,0,$new_width,$new_height,ImageSX($srcimg),ImageSY($srcimg)) or die("Problemi nel ridimensionamento");
          
    ImageJPEG($destimg,$destination_path.$nomeimage,$compression) or die("Problemi nel salvataggio"); 
    La creazione funziona ma la definizione è assurdamente bassa (stento spesso a distinguere qualcosa). Ho tentato di alterare i valori di compressione ma non ha avuto alcun effetto. Sapete consigliarmi qualcosa di meglio o darmi una mano a risolvere il problema?

    Ancora: esiste un modo per avere le dimensioni dell'immagine che sto uppando e fare la thumbnail in proporzione percentuale? Grazie 1000!

  2. #2
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    sostituisci

    codice:
    imagecreate
    con
    codice:
    imagecreatetruecolor
    e poi se vuoi agire sulla compressione, passa un valore alto (100 è il massimo) alla funzione ImageJpeg.

    ciao

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    195
    Codice PHP:
    $nomeimage $Img1_Nome;
      
    #creazione preview con GD library
      
    $new_width=130;      //Larghezza immagine ridimensionata
      
    $new_height=90;      //Altezza immagine ridimensionata
      
    $ncompression=100;      //Compressione dell'immagine jpg
      
    $source_path="$abpath"."uploads/";      //Diretory dove si trova il file di cui volgiamo fare la preview
      
    $destination_path="$abpath"."uploads/thumbs/";      //diretory dove vogliamo salvare l'immagine di preview
      
          
    global $source_path;
          global 
    $destination_path;
          global 
    $new_width;
          global 
    $new_height;
          
    $destimg=ImageCreateTruecolor($new_width,$new_height) or die("Problemi nelle creazioni dell'immagine");
          
    $srcimg=ImageCreateFromJPEG($source_path.$nomeimage) or die("Problemi nell'aprire l'immagine");
          
    ImageCopyResized($destimg,$srcimg,0,0,0,0,$new_width,$new_height,ImageSX($srcimg),ImageSY($srcimg)) or die("Problemi nel ridimensionamento");
          
    ImageJPEG($destimg,$destination_path.$nomeimage,$compression) or die("Problemi nel salvataggio"); 
    Sembra non cambiare nulla

  4. #4
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    prova a sostituire anche imagecopyresized con ImageCopyResampled

    ciao

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    195
    Codice PHP:
    $nomeimage $Img1_Nome;
      
    #creazione preview con GD library
      
    $new_width=130;      //Larghezza immagine ridimensionata
      
    $new_height=90;      //Altezza immagine ridimensionata
      
    $ncompression=100;      //Compressione dell'immagine jpg
      
    $source_path="$abpath"."uploads/";      //Diretory dove si trova il file di cui volgiamo fare la preview
      
    $destination_path="$abpath"."uploads/thumbs/";      //diretory dove vogliamo salvare l'immagine di preview
      
          
    global $source_path;
          global 
    $destination_path;
          global 
    $new_width;
          global 
    $new_height;
          
    $destimg=ImageCreateTruecolor($new_width,$new_height) or die("Problemi nelle creazioni dell'immagine");
          
    $srcimg=ImageCreateFromJPEG($source_path.$nomeimage) or die("Problemi nell'aprire l'immagine");
          
    ImageCopyResampled($destimg,$srcimg,0,0,0,0,$new_width,$new_height,ImageSX($srcimg),ImageSY($srcimg)) or die("Problemi nel ridimensionamento");
          
    ImageJPEG($destimg,$destination_path.$nomeimage,$compression) or die("Problemi nel salvataggio"); 
    Continua a mostrare un'immagine orribile.

  6. #6
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    guarda, io mi ero scritto questa, usala pure se vuoi:

    Codice PHP:
      /**
       * Crea una copia ridimensionata dell'immagine passata nel path passato
       *
       * @param string $path percorso di destinazione
       * @param string $immagine Immagine originale (con percorso)
       * @param int $Xmax Larghezza massima dell'immagine
       * @param int $Ymax Altezza Massima dell'immagine
       * @param string $name Nome dell'immagine
       * @param int $quality Percentuale di compressione jpeg
       *
       */
      
    function thumbnail($path,$immagine,$Xmax,$Ymax$name$quality=70$debug 0) {

        
    $estensione strtolower(array_pop(explode(".",$name)));


        list(
    $width_orig,$height_orig) = getimagesize($immagine);

        if(
    $debug) {
          echo 
    "<ul>";
          echo 
    "[*]Estensione immagine : ".$estensione."";
          echo 
    "[*]Larghezza originale : ".$width_orig."";
          echo 
    "[*]Altezza originale : ".$height_orig."";

        }

        if((
    $width_orig<$Xmax) && ($height_orig<$Ymax)) {

          if(
    $debug) {
            echo 
    "[*]immagine copiatata da $immagine a ".$path.$name."";
          }

          
    copy($immagine$path.$name);

        } else {

          if(
    $Xmax == 0) {  // FIXED Y

            
    $yg=$Ymax;

            
    $xg=($Ymax/$height_orig)*$width_orig// FOTO VERTICALE

          
    } elseif ($Ymax == 0) { // FIXED X

            
    $xg=$Xmax;

            
    $yg=($Xmax/$width_orig)*$height_orig;

          } elseif (
    $width_orig>$height_orig) { // FOTO ORIZZONTALE

            
    $xg=$Xmax;

            
    $yg=($Xmax/$width_orig)*$height_orig;

          }else { 
    // FOTO VERTICALE

            
    $yg=$Ymax;

            
    $xg=($Ymax/$height_orig)*$width_orig// FOTO VERTICALE

          
    }

          if(
    $debug) {
            echo 
    "[*]Nuove dimensioni: x:$xg, y:$yg";

          }


          switch(
    $estensione) {

            case 
    "jpg":

            case 
    "jpeg":

              
    $source ImageCreateFromJpeg($immagine);

              
    $dest imagecreatetruecolor($xg$yg);

              
    ImageCopyResampled($dest$source0000$xg,$yg$width_orig$height_orig);

              
    $newimg $path.$name;

              
    ImageJpeg ($dest$newimg,$quality);

            break;

            case 
    "gif" :

              
    $source imagecreatefromgif($immagine);

              
    $dest imagecreatetruecolor($xg$yg);

              
    ImageCopyResampled($dest$source0000$xg,$yg$width_orig$height_orig);

              
    $newimg $path.$name;

              
    ImageGif($dest$newimg);

            break;

            case 
    "png" :

              
    $source imagecreatefrompng($immagine);

              
    $dest imagecreatetruecolor($xg$yg);

              
    ImageCopyResampled($dest$source0000$xg,$yg$width_orig$height_orig);

              
    $newimg $path.$name;

              
    ImagePng($dest$newimg);

            break;

            }

          
    chmod($newimg0666);

        }

        return 
    $name;

      } 

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    195
    Ho provato con questo script:

    Codice PHP:
    /**
       * Crea una copia ridimensionata dell'immagine passata nel path passato
       *
       * @param string $path percorso di destinazione
       * @param string $immagine Immagine originale (con percorso)
       * @param int $Xmax Larghezza massima dell'immagine
       * @param int $Ymax Altezza Massima dell'immagine
       * @param string $name Nome dell'immagine
       * @param int $quality Percentuale di compressione jpeg
       *
       */
      
    function thumbnail($path$immagine$Xmax$Ymax$name$quality=90$debug=1) {

    $path $abpath "uploads/thumbs/";
    $immagine $abpath "uploads/$Img1_Nome";
    $Xmax "120";
    $Ymax "120";
    $name "$Img1_Nome";

        
    $estensione strtolower(array_pop(explode(".",$name)));


        list(
    $width_orig,$height_orig) = getimagesize($immagine);

        if(
    $debug) {
          echo 
    "<ul>";
          echo 
    "[*]Estensione immagine : ".$estensione."";
          echo 
    "[*]Larghezza originale : ".$width_orig."";
          echo 
    "[*]Altezza originale : ".$height_orig."";

        }

        if((
    $width_orig<$Xmax) && ($height_orig<$Ymax)) {

          if(
    $debug) {
            echo 
    "[*]immagine copiatata da $immagine a ".$path.$name."";
          }

          
    copy($immagine$path.$name);

        } else {

          if(
    $Xmax == 0) {  // FIXED Y

            
    $yg=$Ymax;

            
    $xg=($Ymax/$height_orig)*$width_orig// FOTO VERTICALE

          
    } elseif ($Ymax == 0) { // FIXED X

            
    $xg=$Xmax;

            
    $yg=($Xmax/$width_orig)*$height_orig;

          } elseif (
    $width_orig>$height_orig) { // FOTO ORIZZONTALE

            
    $xg=$Xmax;

            
    $yg=($Xmax/$width_orig)*$height_orig;

          }else { 
    // FOTO VERTICALE

            
    $yg=$Ymax;

            
    $xg=($Ymax/$height_orig)*$width_orig// FOTO VERTICALE

          
    }

          if(
    $debug) {
            echo 
    "[*]Nuove dimensioni: x:$xg, y:$yg";

          }


          switch(
    $estensione) {

            case 
    "jpg":

            case 
    "jpeg":

              
    $source ImageCreateFromJpeg($immagine);

              
    $dest imagecreatetruecolor($xg$yg);

              
    ImageCopyResampled($dest$source0000$xg,$yg$width_orig$height_orig);

              
    $newimg $path.$name;

              
    ImageJpeg ($dest$newimg,$quality);

            break;

            case 
    "gif" :

              
    $source imagecreatefromgif($immagine);

              
    $dest imagecreatetruecolor($xg$yg);

              
    ImageCopyResampled($dest$source0000$xg,$yg$width_orig$height_orig);

              
    $newimg $path.$name;

              
    ImageGif($dest$newimg);

            break;

            case 
    "png" :

              
    $source imagecreatefrompng($immagine);

              
    $dest imagecreatetruecolor($xg$yg);

              
    ImageCopyResampled($dest$source0000$xg,$yg$width_orig$height_orig);

              
    $newimg $path.$name;

              
    ImagePng($dest$newimg);

            break;

            }

          
    chmod($newimg0666);

        }

        return 
    $name;

      } 
    Anche col debug impostato su 1 non mi mostra alcun messaggio e non accade nulla. Dove sto sbagliando??

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    195
    Risolto grazie!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.