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 :

[GD] thumbnail : Problème d'image JPEG non valide


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre confirmé Avatar de Commodore
    Homme Profil pro
    Business manager
    Inscrit en
    Février 2004
    Messages
    599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Business manager

    Informations forums :
    Inscription : Février 2004
    Messages : 599
    Points : 632
    Points
    632
    Par défaut [GD] thumbnail : Problème d'image JPEG non valide
    Bonjour,

    j'ai un petit problème (en fait un gros) avec la fonction Thumbnail donnée dans la FAQ, pour créer des miniatures d'images.

    quand je travaille avec des petites images (pas trop grandes) tout marche parfaitement. Mais dès que j'essaie avec des wallpapers (800x600 et plus grands) plus rien ne va.

    quelqu'un saurait-il m'expliquer comment ça se fait ?

    mon code est le même que celui de la FAQ pour le fichier miniature.php
    http://php.developpez.com/faq/?page=gd#gd_qualiteimage

    le code pour uploader les fichier dans la base est le suivant :
    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
    <?php
     
    	include('../connexion.php');
    	include('miniature.php');
     
    	/*ajouter le path du fichier image dans la base*/
    	$req = "insert into images(img_path, album, img_nom, thumbnail, etat, proprio) values('./wallpapers/".$_POST['nom_image_field']."','".$_POST['album_image_field']."','".$_POST['chemin_image_field']."','./wallpapers/thumb_".$_POST['nom_image_field']."','".$_POST['etat_field']."','".$_POST['proprio_field']."')";
    	$res = mysql_query($req) or die('echec d\'insertion de l\'image dans la base'.mysql_error());
     
    	/*creation de la miniature et la mettre dans le dossier images*/
    	$thumb = thumbnail($_POST['nom_image_field'],100,100);
    	rename($thumb, './'.$thumb);
     
    	echo '<a href="../index.php?numlien=1">Retour</a>'
     
    ?>

  2. #2
    Membre actif

    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 472
    Points : 262
    Points
    262
    Par défaut
    Citation Envoyé par Commodore_Psykopate
    Mais dès que j'essaie avec des wallpapers (800x600 et plus grands) plus rien ne va.
    Tu as une erreur qui est affichée ?
    Que se passe-t-il exactement ?

    Mathieu

  3. #3
    Membre confirmé Avatar de Commodore
    Homme Profil pro
    Business manager
    Inscrit en
    Février 2004
    Messages
    599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Business manager

    Informations forums :
    Inscription : Février 2004
    Messages : 599
    Points : 632
    Points
    632
    Par défaut
    il me dit que le fichier jpg n'est pas valide. j'ai testé avec d'autres jpg. il en est de même.

  4. #4
    Membre actif

    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 472
    Points : 262
    Points
    262
    Par défaut
    Bonsoir,

    Je viens d'essayer ce code avec un JPEG de 1024x768 avec les même paramètres que toi : 100x100. J'ai aucun problème...

    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
     
    <?php
    function thumbail($file, $maxWidth, $maxHeight){//Créer une image à partir de $file
        $img = ImageCreateFromJpeg("$file");
        //Dimensions de l'image
        $imgWidth = imagesx($img);
        $imgHeight = imagesy($img);
        //Facteur largeur/hauteur des dimensions max
        $whFact = $maxWidth/$maxHeight;
        //Facteur largeur/hauteur de l'original
        $imgWhFact = $imgWidth/$imgHeight;
        //fixe les dimensions du thumb
        if($whFact < $imgWhFact){//Si largeur déterminante
            $thumbWidth  = $maxWidth;
            $thumbHeight = $thumbWidth/$imgWhFact;
        } else { //Si hauteur déterminante
            $thumbHeight = $maxHeight;
            $thumbWidth = $thumbHeight*$imgWhFact;
        }
     
        //Crée le thumb (image réduite)
        $imgThumb = ImageCreateTruecolor($thumbWidth, $thumbHeight);
        //Insère l'image de base redimensionnée
        ImageCopyResized($imgThumb, $img, 0, 0, 0, 0, $thumbWidth, $thumbHeight, $imgWidth, $imgHeight);
        //Nom du fichier thumb
        $imgThumbName = "thumb_".$file;
        //Crée le fichier thumb
        $fp = fopen($imgThumbName, "w");
        fclose($fp);
        //Renvoie le thumb créé
        ImageJpeg($imgThumb, $imgThumbName);
        return $imgThumbName;
    }
     
    thumbail('scary-movie-4-wallpaper-4-1024.jpg',100,100);
    ?>
    <html>
    	<head>
    		<title>Test...</title>
    	</head>
    	<body>
    		<img src='thumb_scary-movie-4-wallpaper-4-1024.jpg'/>
    	</body>
    </html>
    Est-ce que les fichiers JPEG en 800x600 sont stockés sur le serveur ou ils viennent d'un formulaire ?

    Mathieu

  5. #5
    Membre confirmé Avatar de Commodore
    Homme Profil pro
    Business manager
    Inscrit en
    Février 2004
    Messages
    599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Business manager

    Informations forums :
    Inscription : Février 2004
    Messages : 599
    Points : 632
    Points
    632
    Par défaut
    en fait, je les uploade vers le serveur avec un formulaire et ils sont miniaturisés à partir du serveur.

    l'erreur se trouve au niveau de la fonction ImageCreateFromJpeg()


  6. #6
    Membre actif

    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 472
    Points : 262
    Points
    262
    Par défaut
    Bonjour,

    Peux-tu nous donner l'erreur exacte qui est affichée ?

    As-tu essayé avec un petit bout de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $image = @imagecreatefromjpeg($imagepath);
    if( !$image )
    {
         echo 'Erreur !';
    }
    else
    {
         // C'est OK!
    }
    Cordialement,
    Mathieu

  7. #7
    Membre confirmé Avatar de Commodore
    Homme Profil pro
    Business manager
    Inscrit en
    Février 2004
    Messages
    599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Business manager

    Informations forums :
    Inscription : Février 2004
    Messages : 599
    Points : 632
    Points
    632
    Par défaut
    en fait, ce test n'est pas possible. L'erreur est un warning.
    donc le traitement continue mais au final on obtient un thumb de 0Byte
    (soit un fichier jpg vide de 100x100).

    -edit- je suis au boulot donc je ne peux pas te donner l'erreur exacte (qui est chez moi),
    mais ça donne à peu près ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Warning : imagecreatefromjpeg() :
     file is not a valid JPG in... <path du fichier miniature.php>

  8. #8
    Membre actif

    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 472
    Points : 262
    Points
    262
    Par défaut
    Bonjour,

    As-tu téléchargé les photos 800x600 après upload afin de vérifier si elles étaient correctes ?

    J'ai trouvé ça sur Google :
    Parfois cela survient quand le fichier est altéré. J'ai déjà eu ça sur un fichier jpeg qui s'affichait pourtant bien dans Internet Explorer, mais dans FireFox quand on regardait les propriétés on voyait qu'il était altéré. php ne peut alors pas le lire (il est très sensible)
    Mathieu

  9. #9
    Membre confirmé Avatar de Commodore
    Homme Profil pro
    Business manager
    Inscrit en
    Février 2004
    Messages
    599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Business manager

    Informations forums :
    Inscription : Février 2004
    Messages : 599
    Points : 632
    Points
    632
    Par défaut
    je vais vérifier cela tout de suite.

  10. #10
    Membre confirmé Avatar de Commodore
    Homme Profil pro
    Business manager
    Inscrit en
    Février 2004
    Messages
    599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Business manager

    Informations forums :
    Inscription : Février 2004
    Messages : 599
    Points : 632
    Points
    632
    Par défaut
    non, ce n'est pas ça. le fichier reste intact.

    par contre voici tous les messages d'erreur (le premier engendre tous les suivants) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Warning: imagecreatefromjpeg(): '4691kiddygrade2_jpg.jpg' is not a valid JPEG file in /home/www/psyko.awardspace.com/wallpapers/miniature.php on line 5
     
    Warning: imagesx(): supplied argument is not a valid Image resource in /home/www/psyko.awardspace.com/wallpapers/miniature.php on line 7
     
    Warning: imagesy(): supplied argument is not a valid Image resource in /home/www/psyko.awardspace.com/wallpapers/miniature.php on line 8
     
    Warning: Division by zero in /home/www/psyko.awardspace.com/wallpapers/miniature.php on line 12
     
    Warning: imagecreatetruecolor(): Invalid image dimensions in /home/www/psyko.awardspace.com/wallpapers/miniature.php on line 23
     
    Warning: imagecopyresized(): supplied argument is not a valid Image resource in /home/www/psyko.awardspace.com/wallpapers/miniature.php on line 25
     
    Warning: imagejpeg(): supplied argument is not a valid Image resource in /home/www/psyko.awardspace.com/wallpapers/miniature.php on line 32

  11. #11
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Non, les 3 premiers messgaes suggèrent qu'effectivement ton image n'est pas correcte. Es-tu certain d'avoir effectué toutes les vérifications d'envoi ?
    http://g-rossolini.developpez.com/tu...age_3#LIII-B-2

    Je crois que, lorsque l'image est trop grosse, il y a une erreur d'envoi mais que ton PHP ne gère pas cette situation. Conclusion : le code s'exécute comme s'il y avait une image, d'où les erreurs.

  12. #12
    Membre actif

    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 472
    Points : 262
    Points
    262
    Par défaut
    Bonjour,

    Les autres messages sont provoqués par le premier, c'est donc normal.

    Je pense vraiment que le problème vient de l'image JPEG uploadée.

    As-tu vérifié ton image uploadée avec Firefox en allant voir les propriétés de celle-ci afin de vérifier si elle est altérée ou non ?

    Mathieu

  13. #13
    Membre confirmé Avatar de Commodore
    Homme Profil pro
    Business manager
    Inscrit en
    Février 2004
    Messages
    599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Business manager

    Informations forums :
    Inscription : Février 2004
    Messages : 599
    Points : 632
    Points
    632
    Par défaut
    en fait pour l'instant j'uploade avec les commandes du serveur. donc je n'ai pas de form d'upload (pas encore).
    mais j'ai testé, comme dit plus haut, d'envoyer un gros fichier puis de le télécharger, je le récupère intact. Donc je ne pense pas qu'il y ait de problème du côté de l'upload... (je peux me tromper)

    pour le test avec firefox, je devrai attendre de rentrer ce soir

  14. #14
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Les fonctions imagesx(), imagesy() et getimagesize() sont indépendantes de la bibliothèque GD. Si elles te donnent des warnings, c'est qu'il y a un souci : soit le fichier n'existe pas, soit ce n'est pas une image valide. Si le fichier existe, peut-être que tu devas réenregistrer le fichier à partir d'un programme de gestion d'images (the gimp, photoshop, tout dépend de ce que tu as sous la main) afin d'obtenir une image correcte.

  15. #15
    Membre confirmé Avatar de Commodore
    Homme Profil pro
    Business manager
    Inscrit en
    Février 2004
    Messages
    599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Business manager

    Informations forums :
    Inscription : Février 2004
    Messages : 599
    Points : 632
    Points
    632
    Par défaut
    ok. j'ai pourtant testé avec 4 gros fichiers jpeg différents, mais avec le meme résultat. Ce ne sont quand même pas les 4 fichiers différents qui sont corrompus ???

    et même si imagex et les autres sont indépendantes de GD, elles récupèrent la sortie de imagecreatefromjpeg()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $img=imagecreatefromjpeg($file);
    imagex($img);
    donc si imagecreatefromjpeg ne retourne rien c'est normal que les suivantes plantent.

  16. #16
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Au temps pour moi, mais essaie avec getimagesize() pour voir.

  17. #17
    Membre confirmé Avatar de Commodore
    Homme Profil pro
    Business manager
    Inscrit en
    Février 2004
    Messages
    599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Business manager

    Informations forums :
    Inscription : Février 2004
    Messages : 599
    Points : 632
    Points
    632
    Par défaut
    sur l'image de base ou sur ce qui sort de imagecreatefromjpeg() ?

    -edit- sur la sortie de imagecreatefromjpeg() : 0, nada, rien

  18. #18
    Membre confirmé Avatar de Commodore
    Homme Profil pro
    Business manager
    Inscrit en
    Février 2004
    Messages
    599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Business manager

    Informations forums :
    Inscription : Février 2004
    Messages : 599
    Points : 632
    Points
    632
    Par défaut
    et voici pour un fichier tout juste uploadé:

    8006002width="800" height="600"

  19. #19
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    As-tu essayé print_r(getimagesize(...)) ? Cela permettrait de voir le type de l'image, des fois que ça plante là...
    En fait, je sèche.

  20. #20
    Membre confirmé Avatar de Commodore
    Homme Profil pro
    Business manager
    Inscrit en
    Février 2004
    Messages
    599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Business manager

    Informations forums :
    Inscription : Février 2004
    Messages : 599
    Points : 632
    Points
    632
    Par défaut
    ça vient peut etre du serveur sur lequel j'héberge mon site, car en local, je n'ai pas ce problème

    tu le connais peut etre: www.awardspace.com

    -edit- note: je suis limité à 500ko par fichier mais je respecte cette limite (même largement). j'ai pris l'option hosting gratuit.

Discussions similaires

  1. problème avec 'anchor', déplacement non valide
    Par aL1ba dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 19/09/2010, 13h45
  2. Problème avec XmlDocument [Données non valide]
    Par mobscene dans le forum C#
    Réponses: 1
    Dernier message: 29/08/2007, 23h16
  3. Réponses: 5
    Dernier message: 13/08/2007, 13h02
  4. Réponses: 2
    Dernier message: 13/06/2007, 23h35

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