<?php // The file $filename = 'test.jpg'; // Set a maximum height and width $width = 200; $height = 200; // Content type header('Content-type: image/jpeg'); // Get new dimensions list($width_orig, $height_orig) = getimagesize($filename); $ratio_orig = $width_orig/$height_orig; if ($width/$height > $ratio_orig) { $width = $height*$ratio_orig; } else { $height = $width/$ratio_orig; } // Resample $image_p = imagecreatetruecolor($width, $height); $image = imagecreatefromjpeg($filename); imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig); // Output imagejpeg($image_p, null, 100); ?>
<? //Cookies du pseudo //***************** $pseudo = $_POST['pseudo']; //Enregistre le pseudo actuel if(($pseudo != "")&&($pseudo != "Anonyme"))setcookie ("cookie_rep", $pseudo, time()+3600*24*365); //valable 1 année //Lecture du pseudo $cook_rep= $HTTP_COOKIE_VARS["cookie_rep"]; if(!isset($cook_rep))$cook_rep = "Anonyme"; if($pseudo "")$pseudo $cook_rep; ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <meta name="description" content="Upload de photo avec redimentionnement" /> <title>upload</title> </head> <?php //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ // création vignettes depuis photo //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ //---------------------------- // DEFINITION DES VARIABLES //---------------------------- $test_local = 0; $extension = 'image/jpeg'; $quality = 90; // Qualité de la compression JPEG $kb_max = 70000; // Valeur max en octets de l'image finale $max_size = 1000000; // Taille max en octets du fichier à uploader pour traitement $largeurDestination = 150; // Largeur max de l'image finale en pixel $nom_rep = "nom_du_dossier_miniatures"; $site = "http://".$_SERVER["HTTP_HOST"]."/nom_du_dossier/"; // Adresse du dossier où est installé le script (fin avec /) //--------------------------------------------- // DEFINITION DES VARIABLES LIEES AUX FICHIERS //--------------------------------------------- $nom_file = $_FILES['fichier']['name']; $taille = $_FILES['fichier']['size']; $tmp = $_FILES['fichier']['tmp_name']; $ext_img = $_FILES['fichier']['type']; $lien_dossier = $nom_rep; $verif_exist = $nom_rep; $verif_exist .= "/"; $verif_exist .= $nom_file; //---------------------- // SCRIPT D'UPLOAD //---------------------- //Vérifie l'existance du dossier de réception //******************************************* if(!file_exists($lien_dossier)) { //Crée le répertoire de classement des photos s'il n'existe pas if(!mkdir($lien_dossier,0755)) { echo "Impossible de créer le répertoire : ",$lien_dossier," --> upload interrompu!!!"; exit; } } //Enlever les accents //******************* function enlever_accents($dest_fichier){ $dest_fichier = strtr($dest_fichier, 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ/', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy/'); //remplacer les caracteres autres que lettres, chiffres et point par _ $dest_fichier = preg_replace('/([^.a-z/0-9]+)/i', '_', $dest_fichier); return $dest_fichier; } $nom_rep = enlever_accents($nom_rep); $pseudo = enlever_accents($pseudo); $verif_exist = enlever_accents($verif_exist); $nom_file = enlever_accents($nom_file); //Début de la procédure d'upload //****************************** if(!empty($_POST['posted'])) { // On vérifie si le champ est rempli if(!empty($nom_file) && (!empty($pseudo))) { //On vérifie que le nom du fichier n'existe pas if(!file_exists($verif_exist)) { // On vérifie l'extension du fichier if($ext_img == $extension) { // On récupère les dimensions du fichier $infos_img = getimagesize($tmp); // On vérifie la taille de l'image if($taille <= $max_size) { //upload du fichier if(move_uploaded_file($tmp,$nom_rep."/".$nom_file)) { echo ' vignette uploadée avec succès ! '; //calcul et redimension //********************* $fichierSource = $nom_rep; $fichierSource .= "/"; $fichierSource .= $nom_file; $fichierSource = $fichierSource; //hauteur / largeur $rapport = $infos_img[1] / $infos_img[0]; //Dimension de sortie $hauteurDestination = $largeurDestination * $rapport; //Création de l'image //******************* $source = imagecreatefromjpeg($fichierSource); $largeurSource = imagesx($source); $hauteurSource = imagesy($source); if($largeurSource > $largeurDestination){ $im = ImageCreateTrueColor ($largeurDestination, $hauteurDestination) or die ("Erreur lors de la création de l'image"); } else{ $im = ImageCreateTrueColor ($infos_img[0], $infos_img[1]) or die ("Erreur lors de la création de l'image"); $largeurDestination = $infos_img[0]; $hauteurDestination = $infos_img[1]; } //Redimentionnement //***************** ImageCopyResampled($im, $source, 0, 0, 0, 0, $largeurDestination, $hauteurDestination, $largeurSource, $hauteurSource); //Création du fichier de sortie //***************************** $fh=fopen($fichierSource,'w'); fclose($fh); ImageJpeg ($im,$fichierSource,$quality); $size_file = filesize($fichierSource); //Test de la taille en kb de l'image définitive //********************************************* $size_file = filesize($fichierSource); $iteration = 0; while($size_file > $kb_max){ if($quality > 0)$quality -= 5; else {$quality = "Erreur!!!"; break;} unlink($fichierSource); $fh=fopen($fichierSource,'w'); fclose($fh); ImageJpeg ($im,$fichierSource,$quality); $size_file = filesize($fichierSource); $iteration++; } $lien_image = $site.$nom_rep."/".$nom_file; //echo "L'image ci-dessous a été redimentionnée et chargée sur le serveur"; //echo "Lien de l'image : ".$lien_image." "; echo " "; } } else { // Sinon on affiche une erreur système echo 'ECHEC DE L'ENVOI Problème lors de l'upload ! Erreur num : ', $_FILES['fichier']['error'], ' '; } } else { // Sinon on affiche une erreur pour les dimensions et taille de l'image echo "La taille du fichier dépasse la taille maximale autorisée de $max_size octets! "; } } else { // Sinon on affiche une erreur pour l'extension echo 'ECHEC DE L'ENVOI Votre image ne comporte pas l'extension .jpg ! '; } } else { //Sinon on demande de renommer echo 'ECHEC DE L'ENVOI Une image avec le même nom existe déjà! Renommer la photo et réessayer, Merci. '; } } else { // Sinon on affiche une erreur pour le champ vide echo 'ECHEC DE L'ENVOI Aucune photo sélectionnée ou aucun pseudo entré! '; } //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ // FIN création vignettes depuis photo //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ ?> <form enctype ="multipart/form-data" action= "<?php echo $_SERVER['PHP_SELF']; ?>" method="POST"> Envoyer le fichier : Votre pseudo : " size ="20" > Sélectionner la photo : </form> </html>