smartimage

SmartImage – Facile manipolazione delle immagini

Nello sviluppo di Siti Web spesso ci imbattiamo nella necessità di gestire le immagini caricate tramite script Php. Soprattutto se i nostri utenti hanno possibilità di caricare foto profilo o altro, spesso e giustamente non stanno a sistemare l’immagine prima di caricarla.

La classe SmartImage ci aiuta ridimensionando, ritagliando (croppare), convertendo, ottimizzando e ruotando le immagini automaticamente. Se utile è possibile anche inserire un Watermark.

Una volta scaricato la classe inseriamola nella root del nostro Sito Web. Richiammiamo la nostra classe dove ci serve utilizzando il classico include così:

<?php 
include "SmartImage.class.php"; 
?>

Non ci rimane che scrivere il codice che ci serve per modificare l’immagine. Ci sono diversi modi di applicare questa classe e li andiamo a vedere insieme.

1) Ridimensioniamo senza modificare le proporzioni

<?php include "SmartImage.class.php"; 

$img = new SmartImage("images/immagine.jpg"); 
$img->resize(250, 80);
$img->saveImage("images/immagine-ridimensionata.jpg");
?>

2) Ridimensioniamo impostando il ritaglio esatto

<?php 
include "SmartImage.class.php"; 

$img = new SmartImage("images/immagine.jpg"); 
//il valore true indica che l'immagine deve essere ritagliata 
$img->resize(120, 120, true);
$img->saveImage("images/immagine-ritagliata.jpg");
?>

3) Convertiamo l’immagine di formato

<?php 
include "SmartImage.class.php"; 

$img = new SmartImage("images/immagine.jpg"); 
$img->saveImage("images/immagine-convertita.png");
?>

4) Ottimizzare riducendo la qualità dell’ 85%

<?php 
include "SmartImage.class.php"; 

$img = new SmartImage($src); 
$img->saveImage("images/immagine.jpg", 85);
?>

5) Ruotiamo l’immagine di 90°

<?php 
include "SmartImage.class.php"; 

$img = new SmartImage($src); 
$img->rotate(90);
$img->saveImage("images/immagine.jpg");
?>

6) Inseriamo un Watermark

<?php
include "SmartImage.class.php";

$img = new SmartImage("images/immagine.jpg");
$img->addWaterMarkImage("images/watermark.gif");
$img->saveImage("images/immagine-con-watermark.png");
?>

Applicazione pratica
Un’applicazione molto ricercata è il salvataggio delle immagini dopo l’upload e l’eventuale creazione di una miniatura utile per gallerie di immagini:

<?php
include "SmartImage.class.php";

//verifico se si sta effettuando qualche operazione
if(isset($_GET['op'])){
	$op = $_GET['op'];
}else{
	$op = "";
}

//se si sta caricando un'immagine opero
if($op == "upload"){
	
	//prendo il file caricato
	$file = $_FILES["immagine"];
	
	//verifico se il campo immagine della form non sia vuoto
	if($file["name"] != ""){
			$img = new SmartImage($file["tmp_name"]);
			//ridimensiono l'immagine a seconda delle mie necessità
			$img->resize(154, 338);
			//la salvo nella cartella
			$img->saveImage("images/".$file["name"]);
			//ritaglio l'immagine salvata per la miniatura
			$img->resize(60, 60, true);
			//e salvo anche questa
			$img->saveImage("miniature/thumb-".$file["name"]);
			
                        //stampo l'immagine e la miniatura
			echo "Immagine:";
			echo "<img src='images/".$file["name"]."'>";
			echo "<br><br>";
			echo "Miniatura:";
			echo "<img src='miniature/thumb-".$file["name"]."'>";
		}else{
                        //stampo l'errore se il caricamento non và a buon fine
			echo "Errore";
		} 
}

?>
<!--Il form per caricare l'immagine-->
<form action="test.php?op=upload" method="post" enctype="multipart/form-data">
<input type="file" name="immagine" />
<input type="submit" value="carica" />
</form>

Ecco a voi lo script di esempio.

Fonte: SmartImage

Davide Arduini Arduini

Developer Web in Php, Html, Asp, Css. Esperienza in sviluppo di siti web, pannelli gestionali e applicativi aziendali per uso interno. Conoscenza base dei vari CMS (Joomla, WordPress, etc..)

WebSite


Seguimi su: TwitterFacebookLinkedInPinterestGoogle PlusYouTube

Progettare un'area riservata completa - Introduzione
Login Php (parte 2 del tutorial)

Potrebbero interessarti anche

9 thoughts on “SmartImage – Facile manipolazione delle immagini

  1. Buongiorno Davide,

    vorrei poter utilizzare il tuo script di upload e resize immagine; mi ritrovo però a dover rinomonare il file con l’id_articolo.
    Mi confermi che dovrei aggiungere alla tua pagina test.php alla riga 31 con:

    $ext = pathinfo($_FILES['file1']['name'], PATHINFO_EXTENSION);

    ed alla riga 41 con:

    rename("images/".$file["name"],"images/".$art_id.'.'.$ext);

    ?

    Grazie mille per l’aiuto!
    Marco

    1. Guarda ti ho riscritto il codice inserendo il rename dell’immagine e della relativa thumb:

      <?php
      include "SmartImage.class.php";
      
      if(isset($_GET['op'])){
      	$op = $_GET['op'];
      }else{
      	$op = "";
      }
      
      if($op == "upload"){
      	
      	//prendo il file caricato
      	$file = $_FILES["immagine"];
      	//id articolo di esempio
      	$art_id = "13";
      	
      	//verifico se il campo immagine della form non sia vuoto
      	if($file["name"] != ""){
      			$img = new SmartImage($file["tmp_name"]);
      			//ridimensiono l'immagine a seconda delle mie necessità
      			$img->resize(154, 338);
      			//la salvo nella cartella
      			$img->saveImage("images/".$file["name"]);
      			//ritaglio l'immagine salvata per la miniatura
      			$img->resize(60, 60, true);
      			//e salvo anche questa
      			$img->saveImage("miniature/thumb-".$file["name"]);
      			
      			//salvo l'estensione in una variabile
      			$ext = pathinfo($file["name"], PATHINFO_EXTENSION);
      			//rinomino l'immagine
      			rename("images/".$file["name"],"images/".$art_id.'.'.$ext);
      			//rinomino la thumb
      			rename("miniature/thumb-".$file["name"],"miniature/thumb-".$art_id.'.'.$ext);
      			//memorizzo il percorso immagine in una variabile
      			$image = "images/".$art_id.'.'.$ext;
      			//memorizzo il percorso thumb in una variabile
      			$thumb = "miniature/thumb-".$art_id.'.'.$ext;
      			
      			echo "Immagine:";
      			echo "<img src=".$image.">";
      			echo "<br><br>";
      			echo "Miniatura:";
      			echo "<img src=".$thumb.">";
      		}else{
      			echo "Errore";
      		} 
      }
      
      ?>
      <form action="test.php?op=upload" method="post" enctype="multipart/form-data">
      <input type="file" name="immagine" />
      <input type="submit" value="carica" />
      </form>
      
  2. Ciao Davide,
    ho provato ad uploadare varie immagini con il tuo script, probabilmente sbaglio qualcosa perchè, a volte, mi restituisce l’anteprima di un’altra immagine ed il relativo file caricato corrisponde (erroneamente) all’anteprima….cosa posso fare?

  3. Ciao Davide,
    ottimo guida.

    Una domanda: e’ possibile utilizzare questa classe PHP per croppare le immagini solo in fase di visualizzazione?
    Sfruttando magari una cache?

    Grazie,
    Roberto.

    1. Puoi provare a memorizzare l’immagine croppata nella cache e visualizzarla. Poi svuoti la cache altrimenti si riempirebbe con le diverse vivite.

      Se trovo qualche codice te lo posto. Tu vedi se in rete trovi qualcosa per gestire la cache per come ti serve.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.