IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Redirection après redimensionnement d'image [PHP 5.2]


Sujet :

Langage PHP

  1. #1
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut Redirection après redimensionnement d'image
    Bonsoir,

    Tout d'abord, désolé si je ne post pas dans la bonne section.
    Mon soucis est surement tout bête mais je n'arrive pas à faire une redirection après une redimensionnement d'image.
    J'upload une image sur le serveur, je créé la vignette associée, puis je voudrais faire une redirection...

    Voici tout d'abord la fonction d'upload :

    fichier: mesfonctions.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    <?php
    include("../connect.php");
    // exemple $cheminGrandImage  : C:\toto\normales\monImage.jpg
    // exemple $cheminVignette    : C:\toto\miniatures\monImage.jpg
    // exemple $extension         : png
    function CreerVignette($cheminGrandeImage,$cheminVignette,$extension)
    {
      switch ($extension)
      {
        case "png" : header ("Content-type: image/png");
                     $image = imagecreatefrompng($cheminGrandeImage);
                     break;
        case "jpeg,jpg" : header('Content-type: image/jpeg');
                      $image = imagecreatefromjpeg($cheminGrandeImage);
                      break;
        case "" :  header('Content-type: image/jpeg');
                      $image = imagecreatefromjpeg($cheminGrandeImage);
                      break;
      }
     
      $dimension=getimagesize($cheminGrandeImage);
      $largeur=$dimension[0];
      $hauteur=$dimension[1];
     
      $tailleMaxi = max($largeur, $hauteur);
      // Calculate offset of square portion of image
      // offsets will both be zero if original image is square
      $deltaX = ($tailleMaxi - $largeur)/2;
      $deltaY = ($tailleMaxi - $hauteur)/2;
     
     
      $destination = imagecreatetruecolor($tailleMaxi, $tailleMaxi); //Image qui sera l'image de destination
      $destinationbis = imagecreatetruecolor(87, 87); //Image qui sera l'image de destination
      $largeur_src = imagesx($image); //Renvoie la largeur de l'image source
      $hauteur_src = imagesy($image); //Renvoie la hauteur de l'image source 
      imagecopyresampled($destination, $image, $deltaX, $deltaY, 0, 0, $largeur, $hauteur, $largeur_src, $hauteur_src);
      imagecopyresampled($destinationbis, $destination, 0, 0, 0, 0, 87, 87, $tailleMaxi, $tailleMaxi);
     
      switch ($extension)
      {
        case "png" : imagepng($destinationbis,$cheminVignette);
                     break;
        case "jpeg,jpeg" : imagejpeg($destinationbis,$cheminVignette);
                      break;
      }
     
      imagedestroy($image);
      imagedestroy($destination);
    }
     
    function upload($nomPhoto,$destinationDossier)
    {
      $erreurExtension="Seules les extensions suivantes sont autorisées: png, jpeg, jpg.";
      $erreurTaille="Le poids de l'image ne peut excéder 300Ko.";
      $erreurImage="Le fichier n'existe pas.";
     
      $nomPhoto=strtolower($nomPhoto);
      $extensionsValide = array('png','jpeg','jpg');
      $tailleMax = 300000;
      //$destinationDossier = '../images/';
      //Test1: fichier correctement uploadé
      if (isset($_FILES['photo']) and ($_FILES['photo']['name']!=NULL))
      {
        if ($_FILES['photo']['size'] <= $tailleMax)
        {
          $extension = strtolower(substr(strrchr($_FILES['photo']['name'],'.'),1));
          if (in_array($extension,$extensionsValide))
          {
            $_FILES['photo']['name']= $nomPhoto;
            $destinationFichier = basename($_FILES['photo']['name']);
            $destinationFichier = strtr($nomPhoto,
            'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
            'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
     
            global $cheminImage;
            $cheminImage='../photos/'.$destinationDossier.'/galeries/photos/'.$destinationFichier;
            global $cheminVignette;
            $cheminVignette='../photos/'.$destinationDossier.'/galeries/photos/miniatures/'.$destinationFichier;
            //$destinationFichier=utf8_encode($destinationFichier);
     
            //$destinationFichier = preg_replace('/([^.a-z0-9]+)/i', '-', $destinationFichier);
            //genere_miniature('./'.$cheminImage,$extension);
            //$destinationFichier=utf8_encode($destinationFichier);
            move_uploaded_file($_FILES['photo']['tmp_name'], $cheminImage);
            CreerVignette($cheminImage,$cheminVignette,$extension);
            return true;
          }
          else
          {
            return $erreurExtension;
          }
        }
        else
        {   
          return $erreurTaille;
        }
      }
      else
      {
        return "Aucun fichier image sélectionné pour l'upload.";
      }
    }
    ?>
    Voici un exemple d'utilisation:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    <?php
      include("mesfonctions.php");
      include("../connect.php");
     
      if(isset($_POST['btnValider']))
      {
        $cheminImage="";
        $cheminVignette="";
        $reussi=upload($_FILES['photo']['name'],"parcours_images");
        if(!is_string($reussi))
        {
          $cheminImage = strtr($cheminImage,
            'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
            'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
          mysql_connect($serveur,$login,$mdp);
          mysql_select_db($bd);
          $sql='INSERT INTO photo (commentairePhoto,cheminPhoto,cheminVignette,rubriquePhoto) VALUES ("'.mysql_real_escape_string(htmlspecialchars($_POST['commentaire'])).'","'.mysql_real_escape_string(htmlspecialchars($cheminImage)).'","'.mysql_real_escape_string(htmlspecialchars($cheminVignette)).'","parcours_images")';
          mysql_query($sql);
          header("location: upload_reussi_parcours_image.php");
        }
        else
        {
        include("entete.php");
        ?>
          <div id="corps">
            <p class="corps_presentation">Ajouter une photo pour <i>Mon Parcours en Images</i></p>
            <?php if(isset($reussi)) echo $reussi; ?>
            <form action="ajouter_photo_parcours_image.php" method="post" enctype="multipart/form-data">
            <p>
              <label>Photo:</label><br />
              <input type="file" name="photo" id="photo" size=74 />
              <input type="button" name="annuler" value="Annuler" onclick="document.getElementById('photo').value = '';" />
            </p>
            <p>
              <label>Commentaire de la photo:</label><br />
              <input type="text" name="commentaire" size=100></textarea>
            </p>
            <p>
              <input type="submit" name="btnValider" value="Uploader la photo" />
            </p>
            </form>
          </div>
          <?php
          include("pied_de_page.html");
        }
      }
      else
      {
        include("entete.php");
        ?>
        <div id="corps">
          <p class="corps_presentation">Ajouter une photo pour <i>Mon Parcours en Images</i></p>
          <form action="ajouter_photo_parcours_image.php" method="post" enctype="multipart/form-data">
          <p>
            <label>Photo:</label><br />
            <input type="file" name="photo" id="photo" size=74 />
            <input type="button" name="annuler" value="Annuler" onclick="document.getElementById('photo').value = '';" />
          </p>
          <p>
            <label>Commentaire de la photo:</label><br />
            <input type="text" name="commentaire" size=100></textarea>
          </p>
          <p>
            <input type="submit" name="btnValider" value="Uploader la photo" />
          </p>
          </form>
        </div>
        <?php
        include("pied_de_page.html");
      }
    ?>
    Et l'erreur :
    Warning: Cannot modify header information - headers already sent by (output started at E:\Serveur Web\www\strapontins\admin\mesfonctions.php:127) in E:\Serveur Web\www\strapontins\admin\mesfonctions.php on line 10

    Warning: Cannot modify header information - headers already sent by (output started at E:\Serveur Web\www\strapontins\admin\mesfonctions.php:127) in E:\Serveur Web\www\strapontins\admin\ajouter_photo_parcours_image.php on line 20
    Le message est on ne peut plus clair Il aime pas la présence du header de redirection une fois le redimensionnement effectué.
    Comment je peux faire pour que tout fonctionne ? Bien sur, si je peux respecter la validation W3C ça serait d'autant mieux

    Merci à vous de m'avoir lu
    Cordialement
    Ero

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 239
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 239
    Points : 15 539
    Points
    15 539
    Par défaut
    dans la méthode "CreerVignette" tu transforme uniquement un fichier dans un autre donc tu n'as pas besoin d'envoyer un entête dans le genre "Content-type: image/..." puisque cet entête sert uniquement à indiquer au navigateur quel est le type d'information envoyé par le script PHP

  3. #3
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    Ah! Je pensais que c'était obligatoire de mettre le header correspondant au type de l'image pour qu'il fassent correctement la création de la vignette.

    Tu m'a enlevé une épine du pied, mais il en reste une seconde. En effet, j'ai toujours la seconde erreur :
    Warning: Cannot modify header information - headers already sent by (output started at E:\Serveur Web\www\strapontins\admin\mesfonctions.php:127) in E:\Serveur Web\www\strapontins\admin\ajouter_photo_parcours_image.php on line 20
    Un dernier coup de pouce stp ?

  4. #4
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 239
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 239
    Points : 15 539
    Points
    15 539
    Par défaut
    Citation Envoyé par ero-sennin Voir le message
    Ah! Je pensais que c'était obligatoire de mettre le header correspondant au type de l'image pour qu'il fassent correctement la création de la vignette.

    Tu m'a enlevé une épine du pied, mais il en reste une seconde. En effet, j'ai toujours la seconde erreur :


    Un dernier coup de pouce stp ?
    l'erreur est expliqué dans la FAQ :
    http://php.developpez.com/faq/?page=...s_already_sent

    d'après le message d'erreur le code a analyser se trouve dans le fichier mesfonctions.php à la ligne 127

  5. #5
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    Je mérite la .

    Tout ça pour un espace après la fermeture de ma balise PHP !!
    Je me coucherai moins bête! Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 15/09/2010, 15h03
  2. requête UPDATE après redimensionnement image
    Par lucho1981 dans le forum Langage
    Réponses: 8
    Dernier message: 15/01/2010, 16h26
  3. [GD] Image noire après redimensionnement
    Par JeffPalmier dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 12/01/2010, 14h29
  4. Calcul d'un recentrage d'image aprés redimensionnement
    Par 3KyNoX dans le forum Général Dotnet
    Réponses: 0
    Dernier message: 25/08/2009, 12h28
  5. [Upload] Redimensionner une image après upload
    Par putubudiarta dans le forum Langage
    Réponses: 2
    Dernier message: 14/01/2007, 12h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo