Torna indietro   AlterVista | Spazio web gratis, hosting free php mysql > Guide per il buon uso di AlterVista > How-To
FAQ Lista utenti Calendario Cerca I messaggi di oggi Segna tutti i forums come letti

Rispondi
 
LinkBack Strumenti discussione Cerca in questa discussione Modalità visualizzazione
  #1 (permalink)  
Vecchio 29-06-2008, 00.43.38
L'avatar di ivano85
ivano85 ivano85 non è connesso
Utente
 
Data registrazione: 09-08-2004
Residenza: Attualmente a Torino
Messaggi: 176
Invia un messaggio via MSN a ivano85 Invia un messaggio via Yahoo a ivano85
Predefinito Come ridimensionare immagini

Introduzione
Questo vuole essere un how-to di interesse e uso generale, quindi anche se userò il PHP per mostrare praticamente cosa fare, i concetti descritti non sono affatto legati al linguaggio e potrete usarli anche se dovete programmare in Java, C, C++ o qual si voglia altro linguaggio e per qualunque scopo.

Perchè quest'articolo?
Molto spesso si vedono siti web in cui le immagini sono lente da caricare oppure sono presentate in modo distorto poichè non sono state ridimensionate rispettandone le proporzioni, per esempio con codice html di questo genere

Codice HTML:
<img src="immagine blabla" width="150" height="150" />
Questo codice mostrerà un'immagine correttamente se la larghezza dell'immagine è uguale alla sua altezza. In caso contrario, l'immagine verrà distorta.

Focalizziamo il problema
Il problema del ridimensionamento consiste sostanzialmente nel mantenere le proporzioni dell'immagine. Spesso si definiscono infatti, delle dimensioni massime che le immagini possono avere: in pratica si necessita di far rientrare tutta l'immagine in un determinato rettangolo.

La soluzione
Da quanto detto, risulta evidente che il fattore discriminante è determinato dal rapporto tra larghezza e altezza dell'immagine e del rettangolo in cui bisognerà visualizzare l'immagine. Dobbiamo quindi confrontare i due rapporti: nel seguete codice useremo i prefissi o_img_, n_img_ e rett_ per indicare variabili relative rispettivamente all'immagine originale, all'immagine ridimensionata e al rettangolo.
Di seguito propongo un possibile codice in PHP per definire le nuove dimensioni dell'immagine (i valori delle variabili che iniziano con il prefisso o_img_ dovrete ricavarli a monte, mentre quelli delle variabili che iniziano con rett_ dovrete impostarli a monte):
Codice PHP:
if ($o_img_width $o_img_height $rett_width $rett_height) {  // Caso 1
    
$n_img_width $rett_width;
    
$n_img_height $n_img_width $o_img_width $o_img_height;
}
else {  
// Caso 2
    
$n_img_height $rett_height;
    
$n_img_width $n_img_height $o_img_height $o_img_width;

Da questo codice dovreste aver capito che se il rapporto larghezza / altezza dell'immagine è maggiore di quello del rettangolo, allora vuol dire che l'immagine è più larga del rettangolo, quindi bisogna innanzi tutto ridimensionare la larghezza (caso 1); nel caso opposto invece, l'immagine è più alta del rettangolo, quindi bisogna innanzi tutto ridimensionare l'altezza. In entrambi i casi viene calcolata la proporzione tra le dimensioni dell'immagine e del rettangolo e tale rapporto viene utilizzato per dimensionare l'altra dimensione.

Conclusioni
Questo è il mio piccolo tributo a questa comunità dalla quale manco da moltissimo tempo e dove spero di trovarmi bene d'ora in poi. Inoltre so che è un argomento piuttosto semplice da trattare (forse troppo), però data la tarda ora e il fatto che nonostante la sua semplicità viene spesso trascurato, ho pensato di farvi questo regalino che spero venga comunque apprezzato. Per quanto riguarda l'how-to, se qualche punto non vi è chiaro, fatemelo sapere così cerco di migliorarlo.
__________________
I miei portali:
Mio sito personale: www.ivanoculmine.com
WebPortal CMS: webportal.ivanoculmine.com
Motors Fever: www.motorsfever.com (portale dedicato al mondo dei motori a 360° con giochi, notizie, curiosità, blog, ecc.)
OpenMind: ivano85.altervista.org (Raccolta di guide, documenti, ecc. su programmazione, hardware, ecc.)
Rispondi citando
Rispondi


Strumenti discussione Cerca in questa discussione
Cerca in questa discussione:

Ricerca avanzata
Modalità visualizzazione

Regole di scrittura
Tu non puoi inserire nuovi messaggi
Tu non puoi rispondere ai messaggi
Tu non puoi inviare files
Tu non puoi modificare i tuoi messaggi

Il codice vB è Attivato
Le faccine sono Attivato
Il codice [IMG] è Attivato
Il codice HTML è Disattivato
Trackbacks are Attivato
Pingbacks are Attivato
Refbacks are Disattivato



Tutti gli orari sono GMT +2. Adesso sono le 04.38.23.


Powered by vBulletin®
Copyright ©2000 - 2007, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO 3.0.0