Claudiogarau.it :: Tutorials & Scripts, PHP, Linux and more.

Home ~ Php :: Resize delle immagini con le GD2 :: Indice Php

Resize delle immagini con le GD2

Categoria: Php Inserito il: 07-03-2006 Stampa (7526 click)

Naturalmente, nel nostro discorso riguardante l'utilizzo delle librerie grafiche GD in PHP, non poteva mancare un accenno ad uno degli argomenti più richiesti in materia, cioè la creazione di thumbnails, miniature d'immagini utilizzatissime nella gestione delle gallery.

A questo scopo proporremo uno script il cui compito è proprio quello di creare delle immagini più piccole partendo da un'originale:

<?
$larghezza_thumb = 100;
$altezza_thumb = 100;
$originale = 'img.jpeg';
$immagine = imagecreatefromjpeg($originale);

  $larghezza = imagesx($immagine);
  $altezza = imagesy($immagine);
  $scala = 
  min($larghezza_thumb/$larghezza, $altezza_thumb/$altezza);

  if ($scala < 1) {
  $nuova_larghezza = floor($scala*$larghezza);
  $nuova_altezza = floor($scala*$altezza);

  $immagine_temporanea = 
  imagecreatetruecolor($nuova_larghezza, $nuova_altezza);

  imagecopyresized($immagine_temporanea, $immagine,0,0,0,0,
  $nuova_larghezza, $nuova_altezza, $larghezza, $altezza);
  imagedestroy($immagine);
  $immagine = $immagine_temporanea;
  }
  header("Content-type: image/jpeg");
  imagejpeg($immagine);
  ?>

L'immagine risultante dal trattamento sarà un output in scala 1 a n rispetto all'originale con altezza e larghezza massime pari a 100 px.

Partendo da un'originale in formato "JPEG", abbiamo creato un file grafico temporaneo del quale si sono calcolate le dimensioni sulla base di ascisse e ordinate (imagesx(), asse delle x, quindi larghezza e imagesy(), asse delle y, quindi altezza).

La scala è stata definita tenendo conto dei valori massimi stabiliti, per cui l'altezza e la larghezza delle thumbnails sono state prima calcolate passandole come argomenti alla funzione min() per poi venire arrotondate da floor(). La prima funzione restituisce il valore numericamente più piccolo tra gli argomenti dati come parametro, floor() invece arrotonda una frazione all'intero inferiore, cioè per difetto.

A questo punto, è stato effettivamente creato il file tempoarneo di miniatura, allocando i colori dell'originale con imagecreatetruecolor() e assegnando al thumb le nuove dimensioni.

imagecopyresized(), che copia e ridimensiona un'immagine passata come argomento, ha accettato come parametri tutti i dati calcolati e raccolti nelle fasi precedenti, a questo punto l'immagine temporanea è stata distrutta (imagedestroy()) e una volta specificato l'header del formato immagine (Content-type: image/jpeg), abbiamo potuto visualizzare l'output desiderato.

Attenzione: questo articolo è stato concesso in esclusiva per la pubblicazione a Mrwebmaster.it; ne è vietata la riproduzione, anche parziale, senza l'esplicito consenso dell'autore e della redazione di Mrwebmaster.it.

Cerca nel sito
Per sito
Sviluppatore di applicazioni Web con competenze evolute nella progettazione delle basi di dati, autore per alcune delle pił importanti testate on line dedicate alla manualistica tecnica (HTML.it, MrWebmaster.it, Edit) e consulente per l'e-learning.
Tutte le categorie
Tutorial Random
Creare funzioni personalizzate
Le funzioni sono dei costrutti sintattici utili per produrre specifici comportamenti. Esistono principalmente due tipologie di funzioni: quelle native messe... Leggi l'articolo
Corsi online per sviluppatori
Corsi per Webmaster, Web Designer, Programmatori, Grafici e Sistemisti