Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > Images > GD
GD Forum d'entraide pour l'extension GD permettant de manipuler des images en PHP. Avant de poster -> tutoriels GD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/08/2006, 21h23   #1
Membre expérimenté
 
Avatar de Commodore
 
Inscription : février 2004
Messages : 601
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Nord (Nord Pas de Calais)

Informations forums :
Inscription : février 2004
Messages : 601
Points : 539
Points : 539
Par défaut 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 :
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>'
 
?>
__________________
Moi, j'aime pas facebook.

Musiciens de France
Commodore est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2006, 21h27   #2
Membre confirmé
 
Homme
Inscription : septembre 2002
Messages : 475
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France

Informations forums :
Inscription : septembre 2002
Messages : 475
Points : 222
Points : 222
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
__________________
Embarcadero RAD Studio XE / Microsoft Windows 7 Édition Intégrale (64 bits)
MaTHieU_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2006, 21h29   #3
Membre expérimenté
 
Avatar de Commodore
 
Inscription : février 2004
Messages : 601
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Nord (Nord Pas de Calais)

Informations forums :
Inscription : février 2004
Messages : 601
Points : 539
Points : 539
il me dit que le fichier jpg n'est pas valide. j'ai testé avec d'autres jpg. il en est de même.
__________________
Moi, j'aime pas facebook.

Musiciens de France
Commodore est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2006, 21h39   #4
Membre confirmé
 
Homme
Inscription : septembre 2002
Messages : 475
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France

Informations forums :
Inscription : septembre 2002
Messages : 475
Points : 222
Points : 222
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 :
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
__________________
Embarcadero RAD Studio XE / Microsoft Windows 7 Édition Intégrale (64 bits)
MaTHieU_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2006, 22h18   #5
Membre expérimenté
 
Avatar de Commodore
 
Inscription : février 2004
Messages : 601
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Nord (Nord Pas de Calais)

Informations forums :
Inscription : février 2004
Messages : 601
Points : 539
Points : 539
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()

__________________
Moi, j'aime pas facebook.

Musiciens de France
Commodore est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2006, 22h20   #6
Membre confirmé
 
Homme
Inscription : septembre 2002
Messages : 475
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France

Informations forums :
Inscription : septembre 2002
Messages : 475
Points : 222
Points : 222
Bonjour,

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

As-tu essayé avec un petit bout de code :
Code :
1
2
3
4
5
6
7
8
9
10
 
$image = @imagecreatefromjpeg($imagepath);
if( !$image )
{
     echo 'Erreur !';
}
else
{
     // C'est OK!
}
Cordialement,
Mathieu
__________________
Embarcadero RAD Studio XE / Microsoft Windows 7 Édition Intégrale (64 bits)
MaTHieU_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/08/2006, 09h03   #7
Membre expérimenté
 
Avatar de Commodore
 
Inscription : février 2004
Messages : 601
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Nord (Nord Pas de Calais)

Informations forums :
Inscription : février 2004
Messages : 601
Points : 539
Points : 539
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 :
1
2
Warning : imagecreatefromjpeg() :
 file is not a valid JPG in... <path du fichier miniature.php>
__________________
Moi, j'aime pas facebook.

Musiciens de France
Commodore est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/08/2006, 09h05   #8
Membre confirmé
 
Homme
Inscription : septembre 2002
Messages : 475
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France

Informations forums :
Inscription : septembre 2002
Messages : 475
Points : 222
Points : 222
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 :
Citation:
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
__________________
Embarcadero RAD Studio XE / Microsoft Windows 7 Édition Intégrale (64 bits)
MaTHieU_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/08/2006, 10h23   #9
Membre expérimenté
 
Avatar de Commodore
 
Inscription : février 2004
Messages : 601
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Nord (Nord Pas de Calais)

Informations forums :
Inscription : février 2004
Messages : 601
Points : 539
Points : 539
je vais vérifier cela tout de suite.
__________________
Moi, j'aime pas facebook.

Musiciens de France
Commodore est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/08/2006, 10h30   #10
Membre expérimenté
 
Avatar de Commodore
 
Inscription : février 2004
Messages : 601
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Nord (Nord Pas de Calais)

Informations forums :
Inscription : février 2004
Messages : 601
Points : 539
Points : 539
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 :
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
__________________
Moi, j'aime pas facebook.

Musiciens de France
Commodore est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/08/2006, 10h34   #11
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
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.
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/08/2006, 10h35   #12
Membre confirmé
 
Homme
Inscription : septembre 2002
Messages : 475
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France

Informations forums :
Inscription : septembre 2002
Messages : 475
Points : 222
Points : 222
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
__________________
Embarcadero RAD Studio XE / Microsoft Windows 7 Édition Intégrale (64 bits)
MaTHieU_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/08/2006, 10h37   #13
Membre expérimenté
 
Avatar de Commodore
 
Inscription : février 2004
Messages : 601
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Nord (Nord Pas de Calais)

Informations forums :
Inscription : février 2004
Messages : 601
Points : 539
Points : 539
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
__________________
Moi, j'aime pas facebook.

Musiciens de France
Commodore est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/08/2006, 10h41   #14
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
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.
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/08/2006, 10h45   #15
Membre expérimenté
 
Avatar de Commodore
 
Inscription : février 2004
Messages : 601
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Nord (Nord Pas de Calais)

Informations forums :
Inscription : février 2004
Messages : 601
Points : 539
Points : 539
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 :
1
2
3
$img=imagecreatefromjpeg($file);
imagex($img);
donc si imagecreatefromjpeg ne retourne rien c'est normal que les suivantes plantent.
__________________
Moi, j'aime pas facebook.

Musiciens de France
Commodore est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/08/2006, 10h52   #16
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
Au temps pour moi, mais essaie avec getimagesize() pour voir.
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/08/2006, 10h54   #17
Membre expérimenté
 
Avatar de Commodore
 
Inscription : février 2004
Messages : 601
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Nord (Nord Pas de Calais)

Informations forums :
Inscription : février 2004
Messages : 601
Points : 539
Points : 539
sur l'image de base ou sur ce qui sort de imagecreatefromjpeg() ?

-edit- sur la sortie de imagecreatefromjpeg() : 0, nada, rien
__________________
Moi, j'aime pas facebook.

Musiciens de France
Commodore est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/08/2006, 11h04   #18
Membre expérimenté
 
Avatar de Commodore
 
Inscription : février 2004
Messages : 601
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Nord (Nord Pas de Calais)

Informations forums :
Inscription : février 2004
Messages : 601
Points : 539
Points : 539
et voici pour un fichier tout juste uploadé:

Citation:
8006002width="800" height="600"
__________________
Moi, j'aime pas facebook.

Musiciens de France
Commodore est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/08/2006, 11h38   #19
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
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.
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/08/2006, 11h41   #20
Membre expérimenté
 
Avatar de Commodore
 
Inscription : février 2004
Messages : 601
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Nord (Nord Pas de Calais)

Informations forums :
Inscription : février 2004
Messages : 601
Points : 539
Points : 539
ç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.
__________________
Moi, j'aime pas facebook.

Musiciens de France
Commodore est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h27.


 
 
 
 
Partenaires

Hébergement Web