PHP|Débutant :: Forums

Advertisement

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

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

#1 Forum Général PHP » [Besoin d'aide] Upload et redimensionnement récalcitrant » 29-10-2011 15:24:25

Titwix
Réponses : 2

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)

Pied de page des forums

Propulsé par FluxBB