http://www.lorenzone.it/php_download....php?idfile=37
scegliendo di mantenere il rapporto delle dimensioni nelle thumbnails, il rapporto è calcolato in base all'altezza che si imposta ma, se i files sono bassi e molto larghi, mantenendo il rapporto, genera thumbs larghissime, ben più del valore impostato.
è possibile fare in modo che il rapporto sia calcolato in modo che non si sfori comunque il limite impostato dalla larghezza delle thumbnails?
posto le parti di codice dei file che credo siano relative a queste operazioni:
config.inc.php(parte)
Codice PHP:
#######################################
# IMPOSTAZIONI PER LE THUMBNAILS #
#######################################
//mantenere rapporto rispetto alla foto grande? valori possibile 'y' e 'n'
$rapporto = "n";
//se viene mantenuto il rapporto dovete impostare solo l'altezza della thumbnail
//altezza desiderata per le thumbnails
$altezza_thumb = 90;
//larghezza desiderata per le thumbnails
$larghezza_thumb = 120;
//qualità per le thumb (da 0 a 100)
$quality_thumbs = 100;
//se esiste mostrare la descrizione anche nella pagina delle thumb? mettere "y" oppure "n"
$desc_inthumb = "y";
resize.php (intero)
Codice PHP:
<?php
########################## SAIBAL GD IMAGE GALLERY 1.0 ########################
# #
# Creato da saibal [[url]http://www.lorenzone.it[/url] / [email]saibal@lorenzone.it[/email]] #
# nel settembre del 2003. #
# #
# Script di libero utilizzo anche per #
# scopi commerciali #
# #
# DONNA NANA TUTTA TANA... VI AMO TUTTE! #
# #
# #
# Baci ai pupi #
# Saibal alias Lorenzo #
###############################################################################
include("config.inc.php");
Header("Content-type: image/".$_GET["type"]);
Header("Content-Disposition: inline; filename=TN_".urldecode($_GET["image"]));
//vedo in quale cartella si trova l'immagine
$file = $immagini."_0".$_GET["id"]."/".urldecode($_GET["image"]);
//preparo lo switch per il tipo esatto di funzione in base al tipo d'immagine
switch($_GET["type"]){
default:
$funzione_image_create = "ImageCreateFromJpeg";
$funzione_image_new = "ImageJpeg";
break;
case "jpg":
$funzione_image_create = "ImageCreateFromJpeg";
$funzione_image_new = "ImageJpeg";
case "jpeg":
$funzione_image_create = "ImageCreateFromJpeg";
$funzione_image_new = "ImageJpeg";
break;
case "png":
$funzione_image_create = "ImageCreateFromPng";
$funzione_image_new = "ImagePNG";
break;
case "gif":
$funzione_image_create = "ImageCreateFromGif";
$funzione_image_new = "ImagePNG";
break;
}
if($rapporto == "y"){
//calcolo il rapporto delle dimensioni delle immagini
$rapporto_division = $_GET["altezza"]/$_GET["larghezza"];
//con number format formatto il rapporto
$rapporto_format = number_format($rapporto_division, 1, '.', ' ');
$final_alt = $altezza_thumb;
$final_largh = number_format($final_alt/$rapporto_format,0);
} else {
$final_alt= $altezza_thumb;
$final_largh = $larghezza_thumb;
}
//restituisce un elemento identificativo per l'immagine data
$img_original = @$funzione_image_create($file);
//--== ################################################################### ==--\\
/* QUESTE DUE VARIABILI LE POSSO LEVARE PERCHE' LE PASSO GIA' VIA GET. COSI' RISPARMIO UN PASSAGGIO*/
//restituisce la lunghezza dell'imagine originale data da ImageCreateFromJpeg
//$orig_x = @ImageSX($src_img);
//restituisce l'altezza dell'imagine originale data da ImageCreateFromJpeg
//$orig_y = @ImageSY($src_img);
//--== ################################################################### ==--\\
//ImageCreateTrueColor: funzione per creare un'immagine con illimitati colori e con altezza e lunghezza dati
$img_final = @ImageCreateTrueColor($final_largh,$final_alt);
//funzione per ridurre le immagini: il primo argomento è il nome della nuova immagine, il secondo è il nome originale, i quattro prossimi valori sono le porzioni di immagine da prendere (se messe a zero prende tutta l'immagine originale), gli ultimi quattro valori sono le dimensioni delle due immagini. Ocio che nella GD gli ultimi due valori che stanno a zero vengono ignorati.
@ImageCopyResampled($img_final, $img_original, 0, 0, 0, 0, $final_largh, $final_alt, $_GET["larghezza"], $_GET["altezza"]);
//questa funzione crea fisicamente il nuovo file
@$funzione_image_new($img_final, "", $quality_thumbs);
//queste due funzioni liberano la memoria dalle immagini create
@ImageDestroy($img_original);
@ImageDestroy($img_final);
?>