Redimensionner une image en 200 par 200

samt01 Messages postés 16 Date d'inscription samedi 13 mars 2004 Statut Membre Dernière intervention 5 octobre 2010 - 20 avril 2010 à 22:55
mailliam Messages postés 261 Date d'inscription mardi 2 juillet 2002 Statut Membre Dernière intervention 10 mars 2014 - 27 avril 2010 à 10:12
Bonjour à tous,

j'aimerais redimensionner mes images si la largeur ou la longueur est supérieur à 200 px.

J'aimerais les redimensionner en maximum 200 pixel en conservant les proportions.

Voici mon script de base :



 if(isset($_FILES['up_photo']))
      {
 
   
      unset($erreur);
   
      $extensions_ok = array('png', 'gif', 'jpg', 'jpeg');
   
  
  // on défini une variable $ratio qui vaudra 150 dans notre cas (150 pixels). 
  // En fait, pour nos miniatures, nous allons respecter le ratio de l'image originale, mais nous allons forcer sa taille à 150 pixels, 
  // soit en hauteur soit en largeur (tout dépend de l'orientation de notre image : paysage ou portrait).  
  
  $ratio = 50;  
  
  // Création des dossiers

  if (!file_exists($dest_dossier)) 
  {
mkdir ($dest_dossier, 0777); 
  }
  
  if (!file_exists($dest_dossier_mini)) 
  {
mkdir ($dest_dossier_mini, 0777); 
  }
  
  // on compte d'abord le nombre d'image dans le répertoire
  
  $num_images = count_files($dest_dossier);
  
if ($num_images < 10)
{
  
  
   // on teste si le champ permettant de soumettre un fichier est vide ou non
if (empty($_FILES['up_photo']['tmp_name'])) 
{
// si oui, on affiche un petit message d'erreur
$erreur[] = 'Aucun fichier envoyé.';
}
else
{

// on examine le fichier uploadé en récupérant de nombreuses informations sur ce fichier 
//(je vous suggère de regarder la documentation de la fonction getimagesize pour de plus amples informations) 
  
$tableau = @getimagesize($_FILES['up_photo']['tmp_name']); 
    
if ($tableau == FALSE) 
{ 
// si le fichier uploadé n'est pas une image, on efface le fichier uploadé et on affiche un petit message d'erreur 
unlink($_FILES['up_photo']['tmp_name']); 
$erreur[] = 'Votre fichier n\'est pas une image.'; 
     }
 else
 {
  
// vérifications de l'extention
  
if( !in_array( substr(strrchr($_FILES['up_photo']['name'], '.'), 1), $extensions_ok ) )
 
{
$erreur[] = 'Veuillez sélectionner un fichier de type png, gif ,jpg ou jpeg !';
}
  
elseif( file_exists($_FILES['up_photo']['tmp_name'])
  
and filesize($_FILES['up_photo']['tmp_name']) > $max_size)
  
{
$erreur[] = 'Votre fichier doit faire moins de 500Ko !';
}
  
// on détremine la taille de la photo
  
$up_taille = $_FILES['up_photo']['size'];

$dest_fichier basename($_FILES['up_photo']['name']);// cela donne le même résultat que la commande> $_FILES['up_photo']['name'];

// si on a déjà un fichier qui porte le même nom que le fichier que l'on tente d'uploader, on modifie le nom du fichier que l'on upload 
  
if (is_file($dest_dossier .$_FILES['up_photo']['name']))
{
// echo 'dest_fichier = '.$dest_fichier;
$dest_fichier = '_'.$_FILES['up_photo']['name']; 
 	// echo 'dest_fichier = '.$dest_fichier;
}


// formatage nom fichier
// enlever les accents

$dest_fichier = strtr($dest_fichier,

'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
 
// remplacer les caracteres autres que lettres, chiffres et point par _
 
$dest_fichier = preg_replace('/([^.a-z0-9]+)/i', '_', $dest_fichier);


  
// on vérifie si le fichier n'est pas déjà présent : 
  
$chemin_fic = $dest_dossier . $dest_fichier;
  

/*if (file_exists($chemin_fic)) 
{
$dest_fichier = 'DUP'.$dest_fichier;
echo 'dest_fichier = '.$dest_fichier;
}*/
// si l'image n'est ni un jpeg, ni un png, on supprime  le fichier uploadé et on affiche le message d'erreur
 
if (!($tableau[2] == 2 || $tableau[2] == 3)) 
{ 
 unlink($_FILES['up_photo']['tmp_name']); 
 $erreur[] = 'Votre image est d\'un format non supporté. Les formats supportés sont uniquement jpeg et png.'; 
} 

}
}
}
else
{
$erreur[] = 'Vous ne pouvez pas charger plus de 10 photos';
}
 
      // copie du fichier
  
      if(!isset($erreur))
 
      {
 
      // copie du fichier

if (move_uploaded_file($_FILES['up_photo']['tmp_name'], $dest_dossier . $dest_fichier)) // à ce moment on met le fichier sur le serveur
{

// Creation de l'image miniature 

 // si notre image est de type jpeg 
if ($tableau[2] == 2) 
{ 
// on crée une image à partir de notre grande image à l'aide de la librairie GD 
$src = imagecreatefromjpeg($dest_dossier.'/'.$dest_fichier); 
// on teste si notre image est de type paysage ou portrait 
if ($tableau[0] > $tableau[1]) 
{ 
$im = imagecreatetruecolor(round(($ratio/$tableau[1])*$tableau[0]), $ratio); 
imagecopyresampled($im, $src, 0, 0, 0, 0, round(($ratio/$tableau[1])*$tableau[0]), $ratio, $tableau[0], $tableau[1]); 
} 
else 
{ 
$im = imagecreatetruecolor($ratio, round(($ratio/$tableau[0])*$tableau[1])); 
imagecopyresampled($im, $src, 0, 0, 0, 0, $ratio, round($tableau[1]*($ratio/$tableau[0])), $tableau[0], $tableau[1]); 
} 
// on copie notre fichier généré dans le répertoire des miniatures 
imagejpeg ($im, $dest_dossier_mini.'/'.$dest_fichier); 
} 

if ($tableau[2] == 3) 
{ 
$src = imagecreatefrompng($dir.'/'.$file_upload); 
if ($tableau[0] > $tableau[1]) 
{ 
$im = imagecreatetruecolor(round(($ratio/$tableau[1])*$tableau[0]), $ratio); 
imagecopyresampled($im, $src, 0, 0, 0, 0, round(($ratio/$tableau[1])*$tableau[0]), $ratio, $tableau[0], $tableau[1]); 
} 
else 
{ 
$im = imagecreatetruecolor($ratio, round(($ratio/$tableau[0])*$tableau[1])); 
imagecopyresampled($im, $src, 0, 0, 0, 0, $ratio, round($tableau[1]*($ratio/$tableau[0])), $tableau[0], $tableau[1]); 
} 
imagepng ($im, $dir_mini.'/'.$file_upload); 
} 







Merci d'avance pour votre aide.

1 réponse

mailliam Messages postés 261 Date d'inscription mardi 2 juillet 2002 Statut Membre Dernière intervention 10 mars 2014 3
27 avril 2010 à 10:12
Tchô!
je sais pas si tu attends tjs une réponse 7 jours après, moi je ferais comme ca:

($donnees['img'] est le chemin de l'img inscrit dans la base de données, car j'imagine que c'est des img que les membres du site ont téléchargées)

<? if ($donnees['img'] == '')
{ //on s'assure qu'il y a bien une img (sinon on fait rien..)
}
else
{ ?>
<? $dimensions=getimagesize($donnees['img']);
if($dimensions[0]<=200 && $dimensions[1]<=200) //200x200px
{
?>

" border="0" ALT="">

<?php }
else
{
?>

" border="0" width="200" hight="200" ALT="">

<? }
}
?>

et voilou
0
Rejoignez-nous