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

    imagecopyresampled immagine sempre 100x100

    salve,
    questo è il mio problema: data un'immagine devo creare una preview di questa, solo che la preview deve essere sempre 100x100 px.

    Per creare le preview utilizzondo il comando:

    imagecopyresampled($thumb2, $source, 0, 0, 0, 0, 100, 100, $width, $height);

    però, ovviamente, le immagini mi vengono distorte. Ora ho capito come fare a crearle non distorte ma non sò come farlo con il suddetto comando..

    Vi spiego, supponiamo che l'immagine sia 1000x700 io dovrei fare il resize di un riquadro 700x700 centrato nell'immagine... ho visto che si può agire sui 4 zeri della funzione imagecopuresampled, non ho capito come fare...

    Qualcuno ha esperienze in merito??

    grazie

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: imagecopyresampled immagine sempre 100x100

    Originariamente inviato da pippuzzo80
    imagecopyresampled($thumb2, $source, 0, 0, 0, 0, 100, 100, $width, $height);

    però, ovviamente, le immagini mi vengono distorte. Ora ho capito come fare a crearle non distorte ma non sò come farlo con il suddetto comando..

    Vi spiego, supponiamo che l'immagine sia 1000x700 io dovrei fare il resize di un riquadro 700x700 centrato nell'immagine... ho visto che si può agire sui 4 zeri della funzione imagecopuresampled, non ho capito come fare...
    Se le immagini vengono "distorte" è perché il rapporto src_width/src_height è diverso da dst_width/dst_height.

    Nel caso specifico sopra un rettangolo di 700x700 (la parte centrale di una immagine 1000x700) lo vuoi far diventare 100x100. Pertanto non ci sarebbe alcuna distorsione (infatti 700/700 = 100/100).

    Quindi src_x = (src_width - 700)/2 e src_y = (src_height - 700)/2
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    ma dove andrebbero messe??

    ho provato in questo modo

    imagecopyresampled($thumb2, $source, src_x, src_y, 0, 0, 100, 100, $width, $height);


    ma ne viene fuori un'immagine tutta nera...

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da pippuzzo80
    ma dove andrebbero messe??

    ho provato in questo modo

    imagecopyresampled($thumb2, $source, src_x, src_y, 0, 0, 100, 100, $width, $height);


    ma ne viene fuori un'immagine tutta nera...
    Tutto sbagliato ... ma hai letto la documentazione e visto quali sono i parametri di imagecopyresampled???

    codice:
    $source_img = imagecreatefromjpeg (".....tua immagine.....");
    
    $thumb_img = imagecreatetruecolor (100, 100);
    
    $source_width = imagesx ($source_img);
    $source_height = imagesy ($source_img);
    
    $source_x = ($source_width - 700) / 2;
    $source_y = ($source_height - 700) / 2;
    
    imagecopyresampled ($thumb_img, $source_img, 0, 0, $source_x, $source_y, 100, 100, 700, 700);
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    ok.

    grazie mille!


  6. #6
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    154
    Salve
    Sto usando anche io questa funzione ed ho un problema. Praticamente non so per quale motivo le immagini mi vengono SEMPRE adattate al formato del mio thumb e non croppate.

    Nel mio caso lo script è un po' diverso perchè sono passate come parametri sia le dimensioni del thumb che quelle dell'immagine quindi nessun valore fisso tipo come l'esempio sopra.

    A livello logico funziona tutto ma invece di croppare l'immagine la distorce adattandola al formato della thumb....

    Posto il codice così vediamo se potete darmi una mano... Lo spero.

    Codice PHP:

    $file_name
    =(---la mia foto...);
    $crop_height=(..altezza thumb passata come parametroIn questo caso è 100..);
    $crop_width=(..larghezza thumb passata come parametroIn questo caso è 150..);
    $original_image_gd imagecreatefrompng($file_name);
    $cropped_image_gd imagecreatetruecolor($crop_width$crop_height);

    $original_image_size getimagesize($file_name);
    $source_width $original_image_size[0];
    $source_height $original_image_size[1];

    //rapporto w/h dell'immagine finale
    $dest_rap=$crop_width/$crop_height;

    //rapporto w/h dell'immagine sorgente
    $src_rap=$$source_width/$source_height;

    if (
    $dest_rap == $src_rap) { //Se il rapporto w/h è uguale la thumb in pratica non va croppata quindi gli passo come punto di taglio 0,0
        
    imagecopyresampled($cropped_image_gd $original_image_gd 0000$crop_width$crop_height$source_width $source_height );
        } elseif (
    $dest_rap $src_rap) { //Se il rapporto w/h è a favore della Thumb vuol dire che l'immagine sorgente va tagliata in altezza e gli dico il punto in cui tagliare
            
    $riq_w $source_height $dest_rap;
            
    $source_x = ($source_width $riq_w) / 2;
            
    $source_y 0;
            
    imagecopyresampled($cropped_image_gd $original_image_gd 00$source_x$source_y$crop_width$crop_height$source_width $source_height );
            } elseif (
    $dest_rap $src_rap) { //Se il rapporto w/h è a favore dell'immagine sorgente vuol dire che la stessa va tagliata in larghezza e gli dico il punto in cui tagliare
                
    $riq_h $source_width $dest_rap;
                
    $source_x 0;
                
    $source_y = ($source_height $riq_h) / 2;
                
    imagecopyresampled($cropped_image_gd $original_image_gd 00$source_x$source_y$crop_width$crop_height$source_width $source_height );
            }


    imagejpeg($cropped_image_gd); 
    Fatto tutto ciò mi vien fuori che siccome lui adatta l'immagine al formato della mia thumb ho come risultato tagli strani con bordi neri... Perè ovviamente lui non va a praticare il crop sulle reali proporzioni dell'immagine sorgente ma su un'immagine distorta....

    Non credo di essere stato molto chiaro ma mi auguro che qualcuno riesca lo stesso ad aiutarmi...

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    154
    Risolto!!

    In pratica gli ultimi 2 parametri sono le dimensioni del riquadro da ritagliare ed io gli passavo le dimensioni originali della foto. Invece gli devo passare la larghezza o l'altezza ridotta in proporzioni per far si che non storci il tutto...

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2008
    Messaggi
    5
    chiedo scusa per riesumare una tale discussione ma è proprio il codice che mi serve e non ho capito cosa va invertito (a scanso di equivoci potreste scrivere il codice corretto)? grazie

  9. #9
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    154
    L'ultima parte è così:

    codice:
    if ($dest_rap == $src_rap) {
    	imagecopyresampled($cropped_image_gd , $original_image_gd , 0, 0, 0, 0, $crop_width, $crop_height, $source_width , $source_height );
    	} elseif ($dest_rap < $src_rap) {
    		$riq_w = $source_height * $dest_rap;
    		$source_x = ($source_width - $riq_w) / 2;
    		$source_y = 0;
    		imagecopyresampled($cropped_image_gd , $original_image_gd , 0, 0, $source_x, $source_y, $crop_width, $crop_height, $riq_w , $source_height );
    		} elseif ($dest_rap > $src_rap) {
    			$riq_h = $source_width / $dest_rap;
    			$source_x = 0;
    			$source_y = ($source_height - $riq_h) / 2;
    			imagecopyresampled($cropped_image_gd , $original_image_gd , 0, 0, $source_x, $source_y, $crop_width, $crop_height, $source_width , $riq_h );
    		}
    
    
    imagejpeg($cropped_image_gd);

    Ti ho evidenziato i parametri che sono sbagliati nella versione precedente!

    Ciao

  10. #10
    Utente di HTML.it
    Registrato dal
    Sep 2008
    Messaggi
    5
    grazie grande avanzo un caffè

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.