Ridimensionare immagini (foto) in PHP
Spesso abbiamo la necessità di creare delle gallerie fotografiche per i siti web. Altre volte è il cliente stesso che ci chiede la possibilità di poter uplodare in maniera del tutto autonoma le proprie immagini sul sito web.
In quest’ultimo caso dobbiamo creare un file PHP che permetta di eseguire le seguenti operazioni:
1- Far caricare l’immagine sul server web tramite una form.
2- Creare in maniera automatica una immagine piccola (thumb) per la galleria.
3- Creare successivamente un’immagine grande (big) per permettere al visitatore del sito di ingrandire la foto cliccandoci sopra.
Vediamo un esempio facile e (come dico sempre io) PRONTO ALL’USO!
Prima di tutto creiamo la form:
<form action="”<?php" enctype="application/x-www-form-urlencoded">” method=”post” enctype=”multipart/form-data” > Scegli l’immagine da salvare sul sito web: <input name="”uploadfile”/" type="text" /> <input type="text" value="”Carica" /> </form>
Adesso creiamo sul server web l’immagine piccola e grande del file.
NOTA: il codice sotto riportato vale solo per immagini formato JPG!!!
if (!empty($_FILES["uploadfile"]["name"]) && $_FILES['uploadfile']['error'] != 1 && ereg(”.jpg$”, $_FILES['uploadfile']['name'])) { // Questo è il file temporaneo creato dal PHP $uploadedfile = $_FILES['uploadfile']['tmp_name']; // Creiamo una immagine dal file temporaneo per poi poterla ridimensionare $src = imagecreatefromjpeg($uploadedfile); // Salviamo le dimensioni originali dell’immagine list($width,$height)=getimagesize($uploadedfile); // Creiamo adesso l’immagine piccola dandogli delle dimensioni // predefinite (in questo caso 150×150 pixel), è comunque // possibile mantenere l’aspect ratio originale, in questo caso // vedere più sotto quando viene creata l’immagine BIG $newwidth=150; $newheight=150; $tmp=imagecreatetruecolor($newwidth,$newheight); // Qui viene ridimensionata l’immagine originale e copiata all’interno della // variabile $tmp imagecopyresampled($tmp,$src,0,0,0,0,$newwidth,$newheight,$width,$height); // Adesso l’immagine appena creata viene salvata sul server web // Specificare qui il percorso dove dovrà essere salvata // Nel nostro esempio in: ./img/thumbs/ $filename1 = “./img/thumbs/”. $_FILES['uploadfile']['name']; imagejpeg($tmp,$filename1,100); // Passiamo alla creazione di un’altra immagine che diventerà quella BIG $src2 = imagecreatefromjpeg($uploadedfile); // In questo caso assegnamo solo il parametro larghezza // a 400 pixels per poi mantere l’aspect ratio. $newwidth2=400; $newheight2=($height/$width)*$newwidth2; $tmp2=imagecreatetruecolor($newwidth2,$newheight2); // Creiamo l’immagine BIG (solita procedura di sopra) imagecopyresampled($tmp2,$src2,0,0,0,0,$newwidth2,$newheight2,$width,$height); // Salviamo l’immagine BIG sul server web $filename2 = “./img/big/”. $_FILES['uploadfile']['name']; imagejpeg($tmp2,$filename2,100); // Cancelliamo adesso dalla memoria le immagini temporanee precedentemente create imagedestroy($src); imagedestroy($tmp); imagedestroy($src2); imagedestroy($tmp2); echo “Upload completato…… ”; }
Note finali: tramite la funzione
ereg(“.jpg$”, $_FILES['uploadfile']['name'])
riportata nell’IF viene controllato se il file caricato ha estensione .jpg,
ma NON se è realmente un file JPG.
Per maggiore sicurezza userei la funzione basename() su $_FILES.


Questo blog è stato creato da Tommaso Capretti.

Grazie…..
Ottimo, proprio quello che mi serviva! Grazie infinite!