Bonjour à tous,

Depuis deux trois jours j'ai un problème avec la fonction qui upload les images. J'utilise la class faite par Grafikart pour upload move et créer une min de l'image souhaitée.

Voicie l’erreur que j'obtiens :
Warning: getimagesize(images/MaintenanceLeak/P1000062.JPG) [function.getimagesize]: failed to open stream: No such file or directory in C:\wamp\www\Galeade2\imgClass.php on line 9

Suivant les photos ça marche ou non, la je comprend pas le problème vue que ça marche un coup sur deux ...

Alors si quelqu'un sait d’où ça peut venir, ça me dépannerai bien :).

8 réponses


Est ce que l'extension des images est toujours la même? (jpg ou JPG etc...)

iluzzion
Auteur

En effet je viens de tester et c'est les images en JPG qui ne marchent pas. Comment je peut faire alors pour qu'elles fonctionnent avec la fonction de grafikart ?

Je viens de regarder la classe et en effet il a spécifié le format jpg et non JPG.

Il faut le rajouter alors mais ne connaissant pas sa classe je ne peux te dire ou le mettre.

iluzzion
Auteur

Voila la classe

<?php
class Img{
    static function creerMin($img,$chemin,$nom,$mlargeur=100,$mhauteur=100){
        // On supprime l'extension du nom
        $nom = substr($nom,0,-4);
        // On récupère les dimensions de l'image
        $dimension=getimagesize($img);
        // On cré une image à partir du fichier récup
        if(substr(strtolower($img),-4)==".jpg"){$image = imagecreatefromjpeg($img); }
        else if(substr(strtolower($img),-4)==".png"){$image = imagecreatefrompng($img); }
        else if(substr(strtolower($img),-4)==".gif"){$image = imagecreatefromgif($img); }
        // L'image ne peut etre redimensionne
        else{return false; }

        // Création des miniatures
        // On cré une image vide de la largeur et hauteur voulue
        $miniature =imagecreatetruecolor ($mlargeur,$mhauteur); 
        // On va gérer la position et le redimensionnement de la grande image
        if($dimension[0]>($mlargeur/$mhauteur)*$dimension[1] ){ $dimY=$mhauteur; $dimX=$mhauteur*$dimension[0]/$dimension[1]; $decalX=-($dimX-$mlargeur)/2; $decalY=0;}
        if($dimension[0]<($mlargeur/$mhauteur)*$dimension[1]){ $dimX=$mlargeur; $dimY=$mlargeur*$dimension[1]/$dimension[0]; $decalY=-($dimY-$mhauteur)/2; $decalX=0;}
        if($dimension[0]==($mlargeur/$mhauteur)*$dimension[1]){ $dimX=$mlargeur; $dimY=$mhauteur; $decalX=0; $decalY=0;}
        // on modifie l'image crée en y plaçant la grande image redimensionné et décalée
        imagecopyresampled($miniature,$image,$decalX,$decalY,0,0,$dimX,$dimY,$dimension[0],$dimension[1]);
        // On sauvegarde le tout
        imagejpeg($miniature,$chemin."/".$nom.".jpg",90);
        return true;
    }

    static function convertirJPG($img){
        // On cré une image à partir du fichier récup
        if(substr(strtolower($img),-4)==".jpg"){$image = imagecreatefromjpeg($img); }
        else if(substr(strtolower($img),-4)==".png"){$image = imagecreatefrompng($img); }
        else if(substr(strtolower($img),-4)==".gif"){$image = imagecreatefromgif($img); }
        // L'image ne peut etre redimensionne
        else{return false; }
        unlink($img);
        imagejpeg($image,substr($img,0,-3)."jpg",90);   
        return true;

    }
}
?>

J'ai essayé dans la classe de faire:

if(substr(strtolower($img),-4)==".JPG"){$image = imagecreatefromjpeg($img); }

Et même de faire un

if(substr(strtolower($img),-4)==".jpg"|| ".JPG"){$image = imagecreatefromjpeg($img); }

et ça ne marche pas.

Voila l'appel de ma fonction :

if (!empty($_FILES)) {
  require("imgClass.php");
   $img3 = $_FILES'Maintenancepicture'];
  $_SESSION'fichier2'] = $img3'name'];
   $ext = strtolower(substr($img3'name'], -3));
  $allow_ext = array('JPG','JPEG','jpg', 'png', 'gif');
  if (in_array($ext, $allow_ext)) {
       Img::convertirJPG("images/MaintenanceLeak/" . $img3'name']);
       move_uploaded_file($img3'tmp_name'], "images/MaintenanceLeak/" . $img3'name']);
       Img::creerMin("images/MaintenanceLeak/" . $img3'name'], "images/MaintenanceLeak", $img3'name'], 320, 240);

    } 
    else {
       $erreur = "Votre fichier n'est pas une image";
   }

}

il faut faire

if((substr(strtolower($img),-4)==".jpg") || (substr(strtolower($img),-4)==".JPG")){$image = imagecreatefromjpeg($img); }
iluzzion
Auteur

Bonjour, je viens de tester et ça ne marche pas.

voici la page d’erreur que j'ai :
Warning: getimagesize(images/fuites/IMGP1096.JPG) [function.getimagesize]: failed to open stream: No such file or directory in C:\wamp\www\Galeade2\imgClass.php on line 9

Warning: imagecreatefromjpeg(images/fuites/IMGP1096.JPG) [function.imagecreatefromjpeg]: failed to open stream: No such file or directory in C:\wamp\www\Galeade2\imgClass.php on line 11

Warning: imagecopyresampled() expects parameter 2 to be resource, boolean given in C:\wamp\www\Galeade2\imgClass.php on line 27

Alors ce qui est bizarre c'est que le lien de mon image est bien récupéré et inséré sur la base, puis j'ai une "miniature" qui est faites, mais c'est juste une photo noir.

Ne devrais je pas modifier cette ligne aussi :

imagejpeg($miniature,$chemin."/".$nom.".jpg",90);

deja renomme ton fichier avec l'extension .jpg pour voir

iluzzion
Auteur

En renommant le fichier ça ne marche pas, il faut que je le réenregistre en jpg en passant par un logiciel.