D'abord nous allons créer un fichier "index.php" avec un formulaire et un champ de fichier :
:!: Attention mettez votre formulaire en enctype="multipart/form-data" :
Code du formulaire de la page index.php :
| CODE |
| <form action="copy.php" method="post" enctype="multipart/form-data" name="form1"> <input type="file" name="image"> <br> <input type="submit" name="Submit" value="Envoyer"> </form> |
Ensuite nous allons créer le fichier copy.php où l'on va trouver notre script :
Code de la page copy.php :
:arrow: Tout d'abord déterminer les critères maximums autorisés (poids et taille) de l'image. Les valeurs indiquées pour la taille sont en pixels et le poids en octets :
| CODE |
<?php $hauteur_max="400"; $largeur_max="400"; $poid_max="100000"; |
:arrow: On détermine les repertoires dans lesquels on va copier les images
Attention : vous devez créer ces deux répertoires et leur attribuer un chmod 777.
| CODE |
$destination_photo="photo"; $destination_vignette="vignette"; |
:arrow: On détermine la proportion des vignettes, ici 4 signifie 1/4 de l'image originelle.
| CODE |
$proportion="4" |
:arrow: On récupère la taille et le poid de l'image à copier :
| CODE |
$taille = getimagesize("$image"); $h_i = $taille[1]; $w_i = $taille[0]; $poid = filesize("$image"); |
:arrow: on vérifie si la taille et le poid de l'image ne dépassent pas nos paramètres de vérification afin de commencer le traitement du nom de l'image pour éviter certains problèmes :
| CODE |
| if (($h_i<=$hauteur_max)&($w_i<=$largeur_max)&($poid<=$poid_max)) { /////////////////on supprime les accents et les espaces du nom de l'image $image_name = strtr($image_name, "ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ", "aaaaaaaaaaaaooooooooooooeeeeeeeecciiiiiiiiuuuuuuuuynn"); /////////////on supprime les espaces $image_name=str_replace(" ","_",$image_name); |
:arrow: On va donc pouvoir maintenant copier l'image en taille réelle dans le répertoire photo.
| CODE |
| copy($image,"$destination_photo/$image_name"); |
:arrow: Maintenant qu'elle est copiée on retourne chercher notre image pour servir de base à notre vignette :
| CODE |
$imagefile="$destination_photo/$image_name"; |
:arrow: On détermine les nouvelles tailles pour la vignette
| CODE |
$src_img = imagecreatefromjpeg($imagefile); $new_w = imagesx($src_img)/$proportion; $new_h = imagesy($src_img)/$proportion; $dst_img = imagecreate($new_w,$new_h); |
:arrow: On fait une copie reproportionnée de notre image
| CODE |
imagecopyresized($dst_img,$src_img,0,0,0,0,$new_w,$new_h,imagesx($src_img),imagesy($src_img)); |
:arrow: On écrit notre fichier image redimentionné dans le répertoire vignette :
| CODE |
if (imagejpeg($dst_img,"$destination_vignette/$image_name")) { $message="$image_name a été copié.<br>"; } else { $message="L'image n'a pas été copié. Veuillez réessayez<br>"; } |
:arrow: Si l'image dépasse nos critères de taille de poids on affiche un message d'erreur :
| CODE |
| } else { $message="<b>INFO </b>sur $image_name<br><br> Largeur = <b>$w_i</b> pixels<br>(le max autorisé est de <b>$largeur_max</b> pixels)<br><br> Hauteur = <b>$h_i</b> pixels<br>(le max autorisé est de <b>$hauteur_max</b> pixels)<br><br> Poids = <b>$poid</b> Octets <br>(le max autorisé est de <b>$poid_max</b> Octet)</font><br>"; } |
Voila à vos galeries d'images........