Forums Développement Multimédia

Les formations Mediabox
Les formations Mediabox

Copier une image sur le serveur et créer la vignette

Compatible PHP. Cliquer pour en savoir plus sur les compatibilités.Par stef, le 13 août 2005

Le but du jeu est de copier une image sur le serveur en taille réelle et créer une vignette correspondante dans un autre dossier.

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 :

<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 :

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 :

<?php
$hauteur_max="400"; 
$largeur_max="400"; 
$poid_max="100000";

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.

$destination_photo="photo"; 
$destination_vignette="vignette";

On détermine la proportion des vignettes, ici 4 signifie 1/4 de l'image originelle.

$proportion="4"

On récupère la taille et le poid de l'image à copier :

$taille = getimagesize("$image"); 
$h_i = $taille[1]; 
$w_i = $taille[0]; 
$poid = filesize("$image");

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 :

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);

On va donc pouvoir maintenant copier l'image en taille réelle dans le répertoire photo.

copy($image,"$destination_photo/$image_name");

Maintenant qu'elle est copiée on retourne chercher notre image pour servir de base à notre vignette :

$imagefile="$destination_photo/$image_name";

On détermine les nouvelles tailles pour la vignette

$src_img = imagecreatefromjpeg($imagefile); 
$new_w = imagesx($src_img)/$proportion; 
$new_h = imagesy($src_img)/$proportion; 
$dst_img = imagecreate($new_w,$new_h);

On fait une copie reproportionnée de notre image

imagecopyresized($dst_img,$src_img,0,0,0,0,$new_w,$new_h,imagesx($src_img),imagesy($src_img));

On écrit notre fichier image redimentionné dans le répertoire vignette :

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>"; 
}

Si l'image dépasse nos critères de taille de poids on affiche un message d'erreur :

   } 
   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……..



stef.jpg Tutorial de stef