soucis avec une function miniature

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : soucis avec une function miniature

Re: soucis avec une function miniature

par pacphil » 14 févr. 2012, 22:53

Merci de ton aide je viens de résoudre le problème merci à toi =D> =D> =D> =D> =D> =D>

Re: soucis avec une function miniature

par Calimero » 14 févr. 2012, 21:03

<?php
function vignette($img_file, $img_max_width, $img_max_height) {
 
   $file = realpath($img_file); // Chemin canonique absolu de l'image
   $dir = dirname($img_file).'/'; // Chemin du dossier contenant l'image
   $img_infos = Getimagesize($file); // Récupération des infos de l'image
// ...
}
?>
Et voici les erreurs
Warning: getimagesize() [function.getimagesize]: Filename cannot be empty in C:\Program Files\EasyPHP-5.3.8.1\hesbaye\function_mini.php on line 6
Hello,

Le premier message d'erreur t'indique que getimagesize() a été appelée avec un nom de fichier vide (lui-même issu de la fonction realpath() plus haut, qui peut retourner FALSE [=du vide] dans certaines conditions).

Il faudrait donc que tu contrôles les appels à la fonction vignette() pour savoir si elle est toujours appelée avec un nom de fichier bien valide.

Tu peux aussi te pencher sur la page de manuel de realpath() pour bien comprendre les limites de cette fonction (voir si une d'entre elles s'applique à ton cas...) : http://fr2.php.net/realpath

soucis avec une function miniature

par pacphil » 14 févr. 2012, 20:56

Bonjour j'ai une soucis avec une fonction miniature une personne serait elle m'éclairer svp , votre aide serait la bien venue .

voici la fonction
<?php
function vignette($img_file, $img_max_width, $img_max_height) {
 
   $file = realpath($img_file); // Chemin canonique absolu de l'image
   $dir = dirname($img_file).'/'; // Chemin du dossier contenant l'image
   $img_infos = Getimagesize($file); // Récupération des infos de l'image
   $img_width = $img_infos[0]; // Largeur de l'image
   $img_height = $img_infos[1]; // Hauteur de l'image
   $img_type = $img_infos[2]; // Type de l'image
 
   // Détermination des dimensions de l'image
   if ($img_max_width > $img_width) {
      $img_max_width = $img_width; // Largeur de la vignette
   }
 
   if ($img_max_height > $img_height) {
      $img_max_height = $img_height; // Hauteur de la vignette
   }
 
   $img_thumb_fact_width_height = $img_max_width / $img_max_height; // Facteur largeur par hauteur des dimensions max de la vignette
   $img_fact_width_height = $img_width / $img_height; // Facteur largeur par hauteur de l'original
 
   // Détermination des dimensions de la vignette
   if ($img_thumb_fact_width_height < $img_fact_width_height) {
      $img_thumb_width  = $img_max_width; // Largeur de la vignette
      $img_thumb_height = $img_thumb_width / $img_fact_width_height; // Hauteur de la vignette
   } else {
      $img_thumb_height = $img_max_height;  // Hauteur de la vignette
      $img_thumb_width  = $img_thumb_height * $img_fact_width_height; // Largeur de la vignette
   }
 
   // Vérification de la présence de la vignette
   $img_file_temp = MINI.$img_file; // Adresse de l'image temporaire de base
   $exp_img_thumb_width = explode(',', $img_thumb_width); // Découpe de la taille de la vignette
   $img_thumb_name = preg_replace('/(.+)\.(.+)/U', '$1'.REW.$exp_img_thumb_width[0].'px.$2', $img_file_temp); //Adresse de la vignette
   if (is_file($img_thumb_name) ) {
      return $img_thumb_name;
   }      
 
   // Création du dossier de l'image
   $exp_dir = explode('/', MINI.$dir); // Découpe du chemin
   $dir = '';
 
   for   ($a = 0; $a < count($exp_dir) -1; $a++) {
      $dir .= $exp_dir[$a].'/'; // Chemin du cache
 
      // Détermination du chemin
      if (!is_dir($dir)) {
         mkdir($dir); // Création du dossier
      }
   }
 
   // Sélection des variables selon l'extension de l'image
   switch ($img_type) {
      case 2:
         $img = imagecreatefromjpeg($file); // Création d'une nouvelle image jpeg à partir du fichier
         $img_ext = '.jpg'; // Extension de l'image
         break;
      case 3:
         $img = imagecreatefrompng($file); // Création d'une nouvelle image png à partir du fichier
         $img_ext = '.png';  // Extension de l'image
   }
 
   $img_thumb = imagecreatetruecolor($img_thumb_width, $img_thumb_height); // Création de la vignette
   Imagecopyresized($img_thumb, $img, 0, 0, 0, 0, $img_thumb_width, $img_thumb_height, $img_width, $img_height); // Insertion de l'image de base redimensionnée
   $file_name = basename($img_file, $img_ext); // Nom du fichier sans son extension
   $img_thumb_name = $dir.$file_name.$img_ext; // Chemin complet du fichier de la vignette
 
 
   // Sélection de la vignette créée
   switch($img_type){
      case 2:
         imagejpeg($img_thumb, $img_thumb_name); // Enregistrement d'une image jpeg avec une compression de 75 par défaut
         break;
      case 3:
         imagepng($img_thumb, $img_thumb_name); // Enregistrement d'une image png
   }
 
   return $img_thumb_name;
}
?>
Et voici les erreurs
Warning: getimagesize() [function.getimagesize]: Filename cannot be empty in C:\Program Files\EasyPHP-5.3.8.1\hesbaye\function_mini.php on line 6

Warning: Division by zero in C:\Program Files\EasyPHP-5.3.8.1\hesbaye\function_mini.php on line 20

Warning: Division by zero in C:\Program Files\EasyPHP-5.3.8.1\hesbaye\function_mini.php on line 21

Notice: Use of undefined constant MINI - assumed 'MINI' in C:\Program Files\EasyPHP-5.3.8.1\hesbaye\function_mini.php on line 33

Notice: Use of undefined constant REW - assumed 'REW' in C:\Program Files\EasyPHP-5.3.8.1\hesbaye\function_mini.php on line 35

Notice: Use of undefined constant MINI - assumed 'MINI' in C:\Program Files\EasyPHP-5.3.8.1\hesbaye\function_mini.php on line 41

Warning: imagecreatetruecolor() [function.imagecreatetruecolor]: Invalid image dimensions in C:\Program Files\EasyPHP-5.3.8.1\hesbaye\function_mini.php on line 64

Notice: Undefined variable: img in C:\Program Files\EasyPHP-5.3.8.1\hesbaye\function_mini.php on line 65

Warning: imagecopyresized() expects parameter 1 to be resource, boolean given in C:\Program Files\EasyPHP-5.3.8.1\hesbaye\function_mini.php on line 65

Notice: Undefined variable: img_ext in C:\Program Files\EasyPHP-5.3.8.1\hesbaye\function_mini.php on line 66

Notice: Undefined variable: img_ext in C:\Program Files\EasyPHP-5.3.8.1\hesbaye\function_mini.php on line 67
Merci d'avance