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 parametro. In questo caso è 100..);
$crop_width=(..larghezza thumb passata come parametro. In 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 , 0, 0, 0, 0, $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 , 0, 0, $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 , 0, 0, $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...