Bonjour,

J'ai suivis le tuto concernant la galerie en php, je vous remercie pour ce superbe tuto.

J'ai rencontré des erreurs lorsque j'essaye d'uploader des images du nom: DSCN0182.JPG, elle créé une miniature mais toute noir et je n'ai plus l'image de la taille réelle.

Pour insérer une image je demande ou on l'upload donc je récupère le nom du dossier

if($_POST'galer']!='1')//retour -1 si il a rien selectionné comme nom de dosier
                        {
                            $dossierimg=$_POST'galer'];

                        if(!empty($_FILES))
                        {
                            require("imgClass.php");
                            $img=$_FILES'img']; //stock fichier dans la variable img
                            $ext=strtolower(substr($img'name'],-3)); // récupère extension du fichier
                            $allow_ext=array("jpg","gif","png"); // tableau des extensions autorisés
                            if(in_array($ext,$allow_ext)) // si le fichier image est dans ce tableau alors on traite
                            {

                                move_uploaded_file($img'tmp_name'],"images/$dossierimg/".$img'name']); // on déplace ce fichier du dossier temporaire pour le dossier images/
                                Img::creerMin("images/$dossierimg/".$img'name'],"images/$dossierimg/min",$img'name'],200,100); // on créer une miniature pour l'afficher sur le site
                                Img::ConvertirJPG("images/$dossierimg/".$img'name']); // on convertie l'image en jpg et on la supprime

                            }
                                else
                                {
                                    $erreur="Votre fichier n'est pas une image"; // affiche ce message si le fichier envoyé ne figure pas dans le tableau des extensions autorisés
                                }

                        }
                        }

la class img:

class Img{
    static function creerMin($img,$chemin,$nom,$mlargeur=200,$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ée une image à partir du fichier récupérer
        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ée une image à partir du fichier récupérer
        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); }
        else { return false;}
        //unlink($img); //supprime l'image dans l'ancienne extension
        imagejpeg($image,substr($img,0,-3)."jpg",90); //on met l'extension .jpg à l'image
        return true;
    }

}

voici les erreurs:
( ! ) Warning: getimagesize(images/Commune/DSCN0182.JPG) [function.getimagesize]: failed to open stream: No such file or directory in C:\wamp\www\projet officiel\imgClass.php on line 9

( ! ) Warning: imagecreatefromjpeg(images/Commune/DSCN0182.JPG) [function.imagecreatefromjpeg]: failed to open stream: No such file or directory in C:\wamp\www\projet officiel\imgClass.php on line 11
Call Stack

( ! ) Warning: imagecopyresampled() expects parameter 2 to be resource, boolean given in C:\wamp\www\projet officiel\imgClass.php on line 25
Call Stack

( ! ) Warning: imagecreatefromjpeg(images/Commune/DSCN0182.JPG) [function.imagecreatefromjpeg]: failed to open stream: No such file or directory in C:\wamp\www\projet officiel\imgClass.php on line 34
Call Stack

( ! ) Warning: imagejpeg() expects parameter 1 to be resource, boolean given in C:\wamp\www\projet officiel\imgClass.php on line 39
Call Stack

Merci.

3 réponses


redbull
Auteur

Personne ?

C'est parce que ton image est trop grande, j'ai aussi eu ce problème. La seule solution que j'ai trouvé est de redimensionner les images avant..
J'avoue que ça serait plus cool de pouvoir uploader toutes les tailles d'images !

En faite s'est la configuration de php qui te limite (généralement de base s est 2MB)!
Trouvez les lignes avec :upload_max_size ou encore post_max_size dans php.ini changer le 2 MB et voila!!