1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
| <?php
// Génère la miniature de l'image
function genere_miniature($cheminImageReelle,$extension)
{
$destinationDossierMiniature = './photos/miniatures/';
// Calcul du ratio entre la grande image et la miniature
list($largeur, $hauteur) = getimagesize($cheminImageReelle);
$ratio = 100/$largeur;
$larg_miniature=$largeur*$ratio;
$haut_miniature=$hauteur*$ratio;
// Crée la ressource image pour la miniature
$destination = imagecreatetruecolor($larg_miniature, $haut_miniature);
// Retourne un identifiant d'image jpeg, gif ou png
$source = call_user_func('imagecreatefrom'.$extension,$cheminImageReelle);
// Redimensionne la grande image
imagecopyresampled($destination, $source, 0, 0, 0, 0, $larg_miniature, $haut_miniature, $largeur, $hauteur);
// Ecriture physique de l'image
chmod ($destinationDossierMiniature, 0700);
call_user_func('image'.$extension, $destination,$destinationDossierMiniature);
// Détruit les ressources temporaires crées
imagedestroy($destination);
imagedestroy($source);
}
function upload($nomPhoto)
{
$erreurExtension="Seuls les extensions suivantes sont autorisées: png, gif, jpg, jpeg.";
$erreurTaille="Le poids de l'image ne peut excéder 200Ko.";
$erreurImage="Le fichier n'existe pas.";
$extensionsValide = array('png', 'gif', 'jpg', 'jpeg');
$tailleMax = 200000;
$destinationDossier = 'photos/';
//Test1: fichier correctement uploadé
if (isset($_FILES['photo']) and ($_FILES['photo']['name']!=NULL))
{
if ($_FILES['photo']['size'] <= $tailleMax)
{
$extension = substr(strrchr($_FILES['photo']['name'],'.'),1);
if (in_array($extension,$extensionsValide))
{
$_FILES['photo']['name']= $nomPhoto.'.'.$extension;
$destinationFichier = basename($_FILES['photo']['name']);
global $cheminImage;
$cheminImage="photos/".$destinationFichier;
$destinationFichier = basename($_FILES['photo']['name']);
genere_miniature('./'.$cheminImage,$extension);
return move_uploaded_file($_FILES['photo']['tmp_name'], $destinationDossier . $destinationFichier);
}
else
{
return $erreurExtension;
}
}
else
{
return $erreurTaille;
}
}
else
{
global $cheminImage;
$cheminImage="photos/portrait_non_disponible.png";
return true;
}
}
?> |
Partager