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)resize.php (intero)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";
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);
?>

Rispondi quotando