PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 29-10-2011 11:58:42

Titwix
Membre
Inscription : 29-10-2011
Messages : 1

[Besoin d'aide] Upload et redimensionnement récalcitrant

Bonjour à tous !

Cela fait quelques jours que j'essaye de venir à bout de ce script... Mais je n'y arrive pas.
J'ai cherché des erreurs, mais je ne les trouve pas.

Voici ce que fais ce script :
1)Il demande à l'utilisateur d'envoyer une image
2)Il vérifie que c'est une image de moins de 1 mo
3)Il accepte l'image en l'enregistrant sous un numéro qui s'incrémente dans un fichier
4)Il fait une miniature de l'image, qui supprime la "grande" image

Voici le script :

<?php
            include('connexion_bdd.php');
           
            if ($_FILES['envoi'] == true && $_FILES['envoi']['error'] == 0) //Un fichier est envoyé sans erreur
            {
              if ($_FILES['envoi']['size'] < 1000000) //Si le fichier fait moins de 1 Mo
              {
                $infosfichier = pathinfo($_FILES['envoi']['name']);
                $extension_upload = $infosfichier['extension'];
                $extensions_autorisees = array('jpg', 'jpeg', 'gif', 'png');
                if (in_array($extension_upload, $extensions_autorisees))  //Si le fichier à la bonne extension
                {
                  $compteur = fopen('nameimg.cyar', 'r+');
                  $ligne = fgets($compteur);
                  $ligne++;
                  fseek($compteur, 0);
                  fputs($compteur, $ligne);
                  fclose($compteur);
                  mysql_query("INSERT INTO uploads VALUES (' ', '".$_SESSION['id']."', '".$ligne."', '".$infosfichier['extension']."')");
                  move_uploaded_file($_FILES['monfichier']['tmp_name'], 'uploads/' . basename($ligne));
                  $nom = $ligne . $infosfichier['extension'];
                  include('imgClass.php');
                  Img::creerMin('uploads/'.$nom,'uploads/min',$nom,215,112);
                 
                }
               
                else  //si le fichier n'a pas la bonne extension
                {
                  echo "Délolé, mais le fichier envoyé n'est pas une image reconnue par le serveur";
                }
              }
             
              else //si le fichier fait plus de 1 Mo
              {
                echo "Désolé, mais l'image envoyée est trop grosse.";
              }
            } ?>

Et la fonction creerMin :

<?php

class Img{

  static function creerMin($img,$chemin,$nom,$mlargeur=100,$mhauteur=100){
   
   
    $dimension=getimagesize($img);
   
    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; }
   
    $miniature =imagecreatetruecolor ($mlargeur,$mhauteur);
   
    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;}
   
    imagecopyresampled($miniature,$image,$decalX,$decalY,0,0,$dimX,$dimY,$dimension[0],$dimension[1]);
   
    if(substr(strtolower($img),-4)==".jpg"){imagejpeg($miniature,$chemin."/".$nom.".jpg",90);}
                else if(substr(strtolower($img),-4)==".png"){imagejpeg($miniature,$chemin."/".$nom.".png",90);}
                else if(substr(strtolower($img),-4)==".gif"){imagejpeg($miniature,$chemin."/".$nom.".gif",90);}
    return true;
  }
}

?>

Merci d'avance pour votre aide ! smile
Edit modération : afin d'améliorer la lisinilitée du code merci de bien indiquer le type de code dans la balise ( code=php ici, ou code=mysql etc etc)

Hors ligne

#2 29-10-2011 13:18:37

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : [Besoin d'aide] Upload et redimensionnement récalcitrant

Bonjour,

Vu que ton code n'est pas colorisé, je l'ai parcouru en diagonale.. Juste une question il est où ton include pour appeler ta classe Img dans ton premier fichier?

++

Dernière modification par Jc (29-10-2011 15:20:50)


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#3 29-10-2011 15:24:25

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : [Besoin d'aide] Upload et redimensionnement récalcitrant

2e lecture, je viens de le voir^^

Bien que je ne vais pas réexpliquer ce que j'ai déjà expliqué à propos des Dépôts de fichier en PHP, ton problème à mon avis et à vu de nez, bien que je n'ai pas de boule de cristal car tu nous dis pas ce qui ne fonctionne pas ni les messages d'erreurs retournés, viendrait donc de tes noms de fichier. Le mieux à mon sens c'est de créer le thumbnail au moment du move, vu le contexte. Après tu fais comme tu veux.

++


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

Pied de page des forums