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

Bibliothèques et frameworks PHP Discussion :

[ImageMagick] Redimensionnement d'images : certaines passent, d'autres pas !


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre du Club Avatar de p0Kep0K
    Homme Profil pro
    Webdesigner
    Inscrit en
    Novembre 2003
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Novembre 2003
    Messages : 76
    Points : 51
    Points
    51
    Par défaut [ImageMagick] Redimensionnement d'images : certaines passent, d'autres pas !
    Hello!

    En redimensionnant des images uploadées par formulaire, certaines se font sans problème et d'autres avec!! Ce n'est pas les dimensions ni le poids du fichier qui génère cette erreur. Certaines photos de mêmes dimensions et poids ne passent pas forcément! Je ne sais pas à quoi cela est dû!!

    Voilà ma portion de script qui génère la nouvelle image (le reste est du redimentionnement):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    // création de la nouvelle image aux dimensions personnalisées
    $ImgDestination = imagecreatetruecolor($ImgNewLargeur, $ImgNewHauteur);
     
    // copie dans l'image initiale redimensionnée
    $ImgSource = imagecreatefromjpeg($ImgTemp);
    imagecopyresampled($ImgDestination, $ImgSource, 0, 0, 0, 0, $ImgNewLargeur, $ImgNewHauteur, $ImgLargeur, $ImgHauteur);
     
    // sauvegarde de la nouvelle image
    imagejpeg($ImgDestination, $ImgTemp, 80);
     
    // destruction des tampons
    imagedestroy($ImgDestination);  
    imagedestroy($ImgSource);
    $ImgTemp est le fichier récupéré par upload.

    Et voici l'erreur que j'obtiens si l'image ne passe pas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Notice: Undefined variable: ImgDestination in ... on line 109
     
    Warning: imagedestroy(): supplied argument is not a valid Image resource in ... on line 109
     
    Notice: Undefined variable: ImgSource in ... on line 110
     
    Warning: imagedestroy(): supplied argument is not a valid Image resource in ... on line 110

    Si quelqu'un à une idée...!
    Merci!

  2. #2
    Membre actif
    Inscrit en
    Janvier 2004
    Messages
    242
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 242
    Points : 271
    Points
    271
    Par défaut
    Tient ma fonction que je me suis faites, si ça peut t'inspirer.... la je ne vois pas pourquoi ton code déconne.
    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
     
    <?php
    //Version 1.0
    //Creation d'une miniature d'une photo
    //$nom -> Nom du fichier sur le disque dur
    //$nom_t -> nom du fichier thumb a creer
    //$imagethumbsize -> taille du thumb
    //$c -> Compression
    //ATTENTION, seul les formats JPeg et PNG sont supportés.
    function genthumb($path,$nom,$nom_t,$imagethumbsize,$c)
    {
        list($width, $height) = getimagesize($path.$nom);
        //Le thumb ne peut pas dépasser les $imagethumbsize * $imagethumbsize
        if ($width>$height)
        {
            $th_h=(int)($height*$imagethumbsize)/$width;
            $th_w=$imagethumbsize;
        }
        else
        {
            $th_w=(int)($width*$imagethumbsize)/$height;
            $th_h=$imagethumbsize;
        }
     
        // résérvation d'espace mémoire de la taille du thumb
        $image_t = imagecreatetruecolor($th_w , $th_h);  // true color for best quality
        if(exif_imagetype($path.$nom)==IMAGETYPE_JPEG) // C'est une Jpeg
        {
           $image = imagecreatefromjpeg($path.$nom);
        }
        else // C'est une PNG
        {
           $image = imagecreatefrompng($path.$nom);
           $nom=basename($nom,".png").'.jpg'; // la miniature sera au format jpg
        }
     
        // on retaille l'image
        imagecopyresampled($image_t, $image,0,0,0,0,$th_w,$th_h,$width,$height);
     
        //Sauvegarde de l'image dans un fichier, avec la compression $c
        imagejpeg($image_t, $path.$nom_t, $c);
     
        //Libére la ram
        imagedestroy($image);
        imagedestroy($image_t);
    }
     
    // Transforme un gif en PNG
    function gif2png($nomgif,$nompng)
    {
      if (imagetypes() & IMG_GIF)
      {
        $p=imagecreatefromgif($nomgif);
        if ($p)
        {
          imagepng($p,$nompng);
          imagedestroy($p);
          return 1;
        }
        else return 0;
      }
      else return 0;
    }
    ?>
    Ps : attention au nom du fichier, qu'il n'existe pas deja sur le serveur

  3. #3
    Membre du Club Avatar de p0Kep0K
    Homme Profil pro
    Webdesigner
    Inscrit en
    Novembre 2003
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Novembre 2003
    Messages : 76
    Points : 51
    Points
    51
    Par défaut
    Merci pour le code!
    Tu utilises pourtant les mêmes fonctions que moi, je ne vois pas pourquoi ça déconne dans mon script...!

    Citation Envoyé par chaced
    Ps : attention au nom du fichier, qu'il n'existe pas deja sur le serveur
    Le nom de mon image est un compteur incrémenté à chaque nouvelle image! Aucun souci!

  4. #4
    Membre actif
    Inscrit en
    Janvier 2004
    Messages
    242
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 242
    Points : 271
    Points
    271
    Par défaut
    Citation Envoyé par p0Kep0K
    Merci pour le code!
    Tu utilises pourtant les mêmes fonctions que moi, je ne vois pas pourquoi ça déconne dans mon script...!

    Citation Envoyé par chaced
    Ps : attention au nom du fichier, qu'il n'existe pas deja sur le serveur
    Le nom de mon image est un compteur incrémenté à chaque nouvelle image! Aucun souci!


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    //On verifi si le fichier existe deja sur le serveur, si oui, on change le nom.
    function renome($path,$fichier)
    {
        $i=-1;
        while(file_exists($path.$fichier))
        {
           $i++;
           $fichier=$i.$fichier;
        }
        return $fichier;
    }
    Par contre je verifi bien que le type d'image est bien supporté par ma fonction avant d'y passer le fichier

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $type=$_FILES['fichier']['type'];
     
    if ((imagetypes() & IMG_GIF) && $type=='image/gif'){$typegif=1;}else{$typegif=0;} // uniquement si GD supporte le GIF
    // on peut uploader
    if (($type=='image/jpeg' || $type=='image/pjpeg' || $typegif || $type=='image/png')&&($_FILES['fichier']['size']<250000))
    {
      //blabla
    }

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

Discussions similaires

  1. [ImageMagick] Redimensionner une image à l'upload
    Par dembroski dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 14/07/2007, 16h23
  2. [ImageMagick] Redimensionner une image
    Par jiojioforever dans le forum Bibliothèques et frameworks
    Réponses: 26
    Dernier message: 05/02/2007, 13h07
  3. [ImageMagick] Redimensionnement d'image
    Par DocCoinCoin dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 21/12/2006, 15h47
  4. [ImageMagick] Redimensionner une image avant de l'enregistrer
    Par julien.63 dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 03/05/2006, 21h01

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