Pagina 2 di 3 primaprima 1 2 3 ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 21

Discussione: Crop immagini

  1. #11
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    360
    Originariamente inviato da satifal
    Un minimo di iniziativa però non guasterebbe!!!

    Nella funzione makeThumb() hai le variabili $width e $height che contengono rispettivamente la larghezza e l'altezza dell'immagine. A questo punto è facile capire l'orientamento della stessa.
    Chiedo scusa ma non sono pratico... puoi essere più diretto?

  2. #12
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    360
    UP!

  3. #13
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    360
    Un aiuto per favore, è importante!

  4. #14
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    360
    Riepilogo, questo è il mio codice:
    Codice PHP:
    <?php
    ini_set
    ("memory_limit","256M");
    function 
    makeThumb($dir,$pic,$n,$t){ 
      list(
    $width$height$type$attr) = getimagesize($pic); 
      
    $max_w 300
      
    $max_h 100

      
    // area utile e offset 
      
    if ($width>$height*$max_w/$max_h) { 
        
    $a_h $height
        
    $a_w $a_h*$max_w/$max_h
        
    $delta_x floor(($width-$a_w)/2);  
        
    $delta_y 0
      }  
      else { 
        
    $a_w $width
        
    $a_h $a_w*$max_h/$max_w
        
    $delta_x 0;  
        
    $delta_y floor(($height-$a_h)/2);  
      }

      
    // verifico che l'immagine originale sia più grande delle dimensioni massime 300*100px 
      
    if ($max_w<$width && $max_h<$height) { 

        
    // creo una nuova immagine  
        
    $thumb imagecreatetruecolor($max_w,$max_h); 
        if (
    $t == 'image/jpeg'){$temp imagecreatefromjpeg($pic);} 
        elseif (
    $t == 'image/gif'){$temp imagecreatefromgif($pic);} 
        elseif (
    $t == 'image/png'){$temp imagecreatefrompng($pic);} 

        
    // ridimensiono l'originale e salvo nella cartella di destinazione 
        
    imagecopyresampled($thumb,$temp,0,0,$delta_x,$delta_y,$max_w,$max_h,$a_w,$a_h); 
        if (
    $t == 'image/jpeg'){imagejpeg($thumb,"$dir/tb_".$n100);} 
        elseif (
    $t == 'image/gif'){imagegif($thumb,"$dir/tb_".$n);} 
        elseif (
    $t == 'image/png'){imagepng($thumb,"$dir/tb_".$n);} 
      } 
    }
    function 
    makeThumb2($dir,$pic,$n,$t){
      list(
    $width$height$type$attr) = getimagesize($pic);
      
    $max_w 1024;
      
    $max_h 768;
      
    $ratio min($max_w/$width,$max_h/$height);

      
    // verifico che l'immagine originale sia più grande delle dimensioni massime 1024*768px
      
    if ($ratio 1){
        
    // individuo le nuove dimensioni da assegnare all'immagine
        
    $w floor($ratio*$width);
        
    $h floor($ratio*$height);

        
    // creo una nuova immagine con le dimensioni appena calcolate
        
    $thumb imagecreatetruecolor($w,$h);
        if (
    $t == 'image/jpeg'){$temp imagecreatefromjpeg($pic);}
        elseif (
    $t == 'image/gif'){$temp imagecreatefromgif($pic);}
        elseif (
    $t == 'image/png'){$temp imagecreatefrompng($pic);}

        
    // ridimensiono l'originale e salvo nella cartella di destinazione
        
    imagecopyresampled($thumb,$temp,0,0,0,0,$w,$h,$width,$height);
        if (
    $t == 'image/jpeg'){imagejpeg($thumb,"$dir/".$n90);}
        elseif (
    $t == 'image/gif'){imagegif($thumb,"$dir/".$n);}
        elseif (
    $t == 'image/png'){imagepng($thumb,"$dir/".$n);}
      }
    }
    ?>
    con un colpo solo faccio 2 operazioni, un ridimensionamento e crop 300x100 ed un ridimensionamento proporzionato 1024x768.

    Mi soffermo solo sulla prima operazione, vorrei che le foto orizzontali venissero ridimensionate e croppate 300x100 (cosa che già avviene), nel caso però le foto fossero verticali, vorrei farle ridimensionare e poi croppare 100x300, come fare?

    Pensavo eventualmente di far scegliere il tipo di crop in fase di upload tramite radio button, se non si trovasse il modo di far riconoscere automaticamente l'orientamento dell'immagine.

  5. #15
    Stessa domanda stessa risposta.
    Se conosci larghezza ed altezza dell'immagine sai anche il suo orientamento.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  6. #16
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    360
    Originariamente inviato da satifal
    Stessa domanda stessa risposta.
    Se conosci larghezza ed altezza dell'immagine sai anche il suo orientamento.
    Ma parli delle dimensioni della foto che gli do in pasto o cosa? Perché quella è variabile, non fissa.

    Manca una porzione di codice che dica anche con un else
    Codice PHP:
      list($width$height$type$attr) = getimagesize($pic);  
      
    $max_w 100;  
      
    $max_h 300
    ma non so in che modo...

  7. #17
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    360
    UP!

  8. #18
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    360
    Ma quello che chiedo non è possibile?

  9. #19
    Originariamente inviato da satifal
    Nella funzione makeThumb() hai le variabili $width e $height che contengono rispettivamente la larghezza e l'altezza dell'immagine. A questo punto è facile capire l'orientamento della stessa.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  10. #20
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    360
    Originariamente inviato da satifal
    Ma si che è facile capire l'orientamento della stessa ma se io faccio già
    Codice PHP:
    function makeThumb($dir,$pic,$n,$t){  
      list(
    $width$height$type$attr) = getimagesize($pic);  
      
    $max_w 300;  
      
    $max_h 100;  

      
    // area utile e offset  
      
    if ($width>$height*$max_w/$max_h) {  
        
    $a_h $height;  
        
    $a_w $a_h*$max_w/$max_h;  
        
    $delta_x floor(($width-$a_w)/2);   
        
    $delta_y 0;  
      }   
      else {  
        
    $a_w $width;  
        
    $a_h $a_w*$max_h/$max_w;  
        
    $delta_x 0;   
        
    $delta_y floor(($height-$a_h)/2);   
      } 
    come faccio ad impostare un else ovvero solo nel caso di foto verticali visto che un else già c'è?

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.