Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    upload e ridimensionamento multiplo

    Buondì.
    Vi spiego il mio problemino:
    Ho una tabella cani e per ogni cane vorrei inserire max 5 foto.
    Avevo pensato di fare così
    1. Uplodare le immagini nella cartella img
    2. Rinominarle (posso avere più cani con lo stesso nome) usando l'Id
    3. mettere nel db il nome
    4. ridimensionare le img e metterle nella cartella tumb.

    i primi tre punti sono ok.
    per il 4°.......?

    Ho anche un paio di domande
    a. Ho letto nelle ricerche che bisogna usare le librerie GD. Io uso Easyphp 2.0, ci sono già o le devo installare
    b. Esiste uno script per tutto il problema.

    Grazie in anticipo per qualunque aiuto o consiglio

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    53
    beh cosi a naso forse ho qualcosa per te ma vorrei capire se il server è linux o windows le gd sono sicuramente installate sui server linux.
    per quanto riguarda il ridimensionamento mi pare di aver capito che ad ogni cane associ un id quindi supponendo di avere una tabella cani mi dovresti dire quali campi hai sviluppato nella cartella.
    Io ti consigli di fare in modo che ogni volta che inserisci un cane si creino in automatico una cartella nominata con l'id del cane. e quindi in questa vengano create due sottotabelle, una la chimeremo foto e l'altra thumb.
    A questo punto bisogna fare in modo che quando carichi la foto l'originale va nella cartella foto mentre la ridimensionata nella cartella thumb.
    In questo modo non dovresti avere problemi per quanto riguarda i nomi dei cani perchè se hai associato un id quando clicchi sulla scheda di quel cane vai a richiamare le foto inserite nella cartella con l'idi del cane.

  3. #3
    Ok grazie intanto per la risposta anche se di domenica.
    1. Il server è linux
    2. io rinomino il file in questo modo
    $nomefile = $_POST["id"].$_FILES["tumb"]["name"];
    dove $_POST["id"] è l'id del cane perchè ho suddiviso l'invio su due pagine dove nella prima inserisco tutti i dati (30 circa) nella seconda faccio l'upload delle immagini inserendo nel db i nomi con UPDATE.
    In questa maniera il nome delle immagini sono
    02billy01.ipg
    02billy02.jpg
    ....
    preferirei avere anche le tumb in questa maniera in una sola cartella tumb.
    E' possibile?

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    53
    Ciao per creare le sottocartelle foto e thumb
    devi usare mkdir:
    Codice PHP:
    // crea cartella
                        
    $path "../public/cani/".$id_path["ultimoid"];//ricava l'id per nominare la cartella
                        
    mkdir($path);//crea la cartella id numero1,2,3,...
                        
    mkdir($path."/foto");//crea la sottocartella foto
                        
    mkdir($path."/thumb");//crea la sottocartella thumb

                        
    stampa_msg("Operazione eseguita con successo");//controllo esito 
    in pratica la variabile patch cosi come l'ho impostata ti permette di creare a seconda dell'id del cane una cartella nominata con l'id di quest'ultimo attraverso il primo mkdir.
    A questo punto non fai altro che creare le due sottocartelle foto e thum al'interno di ogni cartella id che man mano vai a creare inserendo nel tuo database i vari cani.
    La funzione per l'upload che potrebbe essere la seguente:
    Codice PHP:
    <? 
                        
                        
    if ((isset($_POST["act"])) AND ($_POST["act"] == "upload") ){ 
                            if(isset(
    $_FILES["file"]["size"])){
                                
    $id $_POST["id"];
                                
    $file =$_FILES["file"]["name"];
                                
    $arr_ext = array("gif","jpg","jpeg");
                                list(
    $ok_upload,$end_result,$file_name) = uploadFile("../public/cani/".$id."/foto/",$_FILES["file"],$arr_ext);    
                                if(
    $ok_upload){
                                    
                                    
                                    
    //-------------------------------- Funzione per creare la thumb
                                    
    include("../include/gd.php");
    $img "../public/cani/".$id."/foto/".$file// percorso al file dell'immagine 
    $dest "../public/cani/".$id."/thumb/".$file// directory di salvataggio delle miniature create 
    // dimensioni della miniatura da creare 
                                    
    $thumbWidth 100// larghezza 
                                    
    $thumbHeight 100// altezza 
                                    // livello di compressione della miniatura 
                                    
    $thumbComp 80

                                    
    // creazione dell'immagine della miniatura 
                                    
    $thumb imagecreatetruecolor($thumbWidth$thumbHeight) or die("Impossibile creare la miniatura"); 
                                    
    // apertura dell'immagine originale   
                                    
    $src imagecreatefromjpeg($img) or die ("Impossibile aprire l'immagine originale"); 

                                    
    // copio l'immagine originale in quella della miniatura ridimensionandola 
                                    
    imagecopyresampled($thumb$src0000$thumbWidth$thumbHeightimageSx($src), imageSy($src)) or                                   die("Impossibile ridimensionare l'immagine"); 

                                    
    // salvataggio miniatura 
                                    
    imagejpeg($thumb$dest$thumbComp) or   die("Impossibile salvare la miniatura");

    echo 
    "<script>self.location.href='appalti_foto.php?id=".$id."';</script>";
                                    
                                    
    stampa_msg();
                                }else{
                                    
    stampa_msg("Il file non è stato caricato:

    "
    .$end_result);
                                }
                            }else{
                                
    stampa_msg("Nessun file selezionato");
                            }
                        }else{
                    
    ?>
    Per quantoriguarad la funzione per l'inserimento dei cani nel database io fare i in questo modo:
    In un unico file tipo config.php metti le seguenti funzioni:
    Codice PHP:
    function rs($sql){
            
    $result mysql_query($sql);
                
                if (
    $result){
                            return 
    $result;
                }else{
                            
    stampa_msg("Non è stato posibile eseguire l'operazione");
                            die;
                }


    Codice PHP:
    function get_cani($id) {
        if ((!
    is_null($id)) AND ($id != )) {
            
    $sql "SELECT * FROM cani WHERE id_cane = $id ";
            
    $result rs($sql);
            return 
    $result;
        }else{
            
    stampa_msg("Nessuna Galleria selezionata");
        }

    Mentrre per estrapolare i risultati potresti utilizzare questa
    Codice PHP:
    function elenco_cani($limit=0) {
        
        
    $sql "SELECT * FROM cani ORDER BY (razza o quello che vuoi tu  DESC";
        if (
    $limit != ) {
            
    $sql .= " LIMIT $limit";
        }
        
    $result rs($sql);
        return 
    $result;


    Questo invec è il file gd.php dal quale sbizzarrendoti un pò puoi personalizzare le tue foto
    Codice PHP:
    <? 
    function GDVersion(){
      if( !
    in_array('gd'get_loaded_extensions()) ) return 0;
      elseif( 
    isGD2supported() ) return 2;
      else return 
    1;
    }
    function 
    isGD2supported(){
      global 
    $GD2;
      if( isset(
    $GD2) AND $GD2 ) return $GD2;
      else{
        
    $php_ver_arr explode('.'phpversion());
        
    $php_ver intval($php_ver_arr[0])*100+intval($php_ver_arr[1]);

        if( 
    $php_ver 402 ){ // PHP <= 4.1.x
          
    $GD2 in_array('imagegd2',get_extension_funcs("gd"));
        }
        elseif( 
    $php_ver 403 ){ // PHP = 4.2.x
          
    $im = @imagecreatetruecolor(1010);
          if( 
    $im ){
            
    $GD2 1;
            @
    imagedestroy($im);
          }
          else 
    $GD2 0;
        }
        else{ 
    // PHP = 4.3.x
          
    $GD2 function_exists('imagecreatetruecolor');
        }
      }

      return 
    $GD2;
    }


    function 
    IsFormatSupported($format){
      if( (
    $format == 'gif') AND (imagetypes() & IMG_GIF) )return true;
      elseif( (
    $format == 'jpeg') AND (imagetypes() & IMG_JPG) )return true;
      elseif( (
    $format == 'png') AND (imagetypes() & IMG_PNG) )return true;
      else return 
    false;
    }



    function 
    ApplicaBordo(&$imres){
      
    $h imagesy($imres)-1;
      
    $w imagesx($imres)-1;

      
    $white imagecolorallocate($imres255255255);
      
    $black imagecolorallocate($imres000);

      
    imagerectangle($imres00$w$h$black);   // Bordo composto da una linea esterna nera
      
    imagerectangle($imres11$w-1$h-1$white); // e da una linea interna bianca
    }



    function 
    imagemyrectangle(&$imgres$x1$y1$x2$y2$col){
      
    imageline($imgres$x1$y1$x2-2$y1$col ); //top
      
    imageline($imgres$x1+1$y2-1$x2$y2-1$col ); //bottom

      
    imageline($imgres$x2-1$y1$x2-1$y2-2$col ); //right
      
    imageline($imgres$x1$y1+1$x1$y2$col ); //left
    }



    //Watermark : Anche l'applicazione di un watermark, cioè di un'immagine salvata sopra all'originale per impedirne un utilizzo al di fuori dei termini di licenza è un'operazione abbastanza semplice con le librerie GD.

    function AddWaterMark(&$imgres, &$imgWM){
      
    imageCopyMerge($imgres$imgWM5500imageSX($imgWM), imageSY($imgWM), 50); }
      
    function 
    make_thumb($source$destination$size) {
            
    // Check if GD is installed
            
    if(extension_loaded(’gd’) AND function_exists(’imageCreateFromJpeg’)) {
                    
    // First figure out the size of the thumbnail
                    
    list($original_x$original_y) = getimagesize($source);
                    if (
    $original_x $original_y) {
                            
    $thumb_w $size;
                            
    $thumb_h $original_y*($size/$original_x);
                    }
                    if (
    $original_x $original_y) {
                            
    $thumb_w $original_x*($size/$original_y);
                            
    $thumb_h $size;
                    }
                    if (
    $original_x == $original_y) {
                            
    $thumb_w $size;
                            
    $thumb_h $size;
                    }
                    
    // Now make the thumbnail
                    
    $source imageCreateFromJpeg($source);
                    
    $dst_img ImageCreateTrueColor($thumb_w$thumb_h);
                    
    imagecopyresampled($dst_img,$source,0,0,0,0,$thumb_w,$thumb_h,$original_x,$original_y);
                    
    imagejpeg($dst_img$destination);
                    
    // Clear memory
                    
    imagedestroy($dst_img);
               
    imagedestroy($source);
               
    // Return true
               
    return true;
       } else {
               return 
    false;
       }
    }  
      

    function 
    thumb($src,$dest,$thumb_width){

        
    //Inizio il resize 
        
    $fullsize getimagesize($src);
          if( 
    $fullsize[2] == ){$im = @imagecreatefromjpeg($src);}
          elseif( 
    $fullsize[2] == ){$im = @imagecreatefromgif($src);}
          elseif( 
    $fullsize[2] == ){$im = @imagecreatefrompng($src);}
        
        
        
    $fullsize_height=$fullsize[1];
        
    $fullsize_width=$fullsize[0];
         
        
    $thumb_height=floor($fullsize_height/($fullsize_width/$thumb_width));
         
        
        
        
        if( (
    GDVersion() == 2) AND ($fullsize[2] != 1) ){
            
    $thumb imagecreatetruecolor($thumb_width,$thumb_height);
            
    imagecopyresampled($thumb$im0000$thumb_width$thumb_height$fullsize[0], $fullsize[1]);
          }else{
            
    $thumb imagecreate($thumb_width,$thumb_height);
            
    imagecopyresized($thumb$im0000,$thumb_width$thumb_height$fullsize[0], $fullsize[1]);
          }
        

        
    imagejpeg($thumb$dest50);
          
    imagedestroy($im);
        
    imagedestroy($thumb);
    }  

    // Recupero delle dimensioni dell'immagine

    function dimimage($src){
        
    $fullsize getimagesize($src);
          if( 
    $fullsize[2] == ){$im = @imagecreatefromjpeg($src);}
          elseif( 
    $fullsize[2] == ){$im = @imagecreatefromgif($src);}
          elseif( 
    $fullsize[2] == ){$im = @imagecreatefrompng($src);}
        
        
    $fullsize_height=$fullsize[1];
        
    $fullsize_width=$fullsize[0];
        
    imagedestroy($im);
        return array(
    $fullsize_width,$fullsize_height);
    }

    ?>
    Spero che ti possa servire quello che ti ho scritto.
    Una soluzione alternativa forse più consona alla tua richiesta puoi trovarla in un mio topic inserito di recente nel quale puoi trovare spunto per quello che intendi fare.

  5. #5

    GRAZIE MILLE

    Grazie mille.
    Ho tardato a risponderti perchè ho smanettato fino ad adesso.
    Però ci sono riuscito e funziona tutto perfettamente.
    Ho ancora qualche problemino perchè della prima immagine devo fare una tumb diversa (come dimensioni) dalle altre 4. Però sia il ridimensionamento che l'upload funziona.
    L'ho adattato alle mie esigenze senza creare le directory per ogni cane, ma rinominando le immagini con l'id.

    A presto Nico74b e ancora 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.