Insérer PNG et GIF dans ma galerie photo
Résolu
jean.miche
Messages postés
90
Date d'inscription
Statut
Membre
Dernière intervention
-
jean.miche Messages postés 90 Date d'inscription Statut Membre Dernière intervention -
jean.miche Messages postés 90 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous,
J'ai créé une galerie photos sur mon site qui génère des minis et des mediums en même temps, seulement la page d'ajout de photos ne digère pas les .PNG ou les .GIF contrairement aux .JPG qui passent niquel.
Lorsque je veux envoyer un fichier .PNG ou .GIF, voici le message que le serveur me renvoie :
Warning: imagecreatefromjpeg() [function.imagecreatefromjpeg]: gd-jpeg: JPEG library reports unrecoverable error: in /mon_site/www/ajout_photos.php on line 13
Warning: imagecreatefromjpeg() [function.imagecreatefromjpeg]: '/tmp/phpc6NzXQ' is not a valid JPEG file in /mon_site/www/ajout_photos.php on line 13
Warning: imagecopyresampled(): supplied argument is not a valid Image resource in /mon_site/www/ajout_photos.php on line 23
Warning: imagecopyresampled(): supplied argument is not a valid Image resource in /mon_site/www/ajout_photos.php on line 30
Warning: imagedestroy(): supplied argument is not a valid Image resource in /mon_site/www/ajout_photos.php on line 32
Warning: move_uploaded_file(../photos/1262624241image/png) [function.move-uploaded-file]: failed to open stream: No such file or directory in /mon_site/www/ajout_photos.php on line 51
Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/phpc6NzXQ' to '../photos/1262624241image/png' in /mon_site/www/ajout_photos.php on line 51
Impossible de copier le fichier dans ../photos/
Pour que vous puissiez mieux interpréter le problème, voici le code de ma page ajout_photos.php :
<?php
if( isset($_POST['upload']) ) // si formulaire soumis
{
$content_dir = '../photos/'; // dossier où sera déplacé le fichier
$tmp_file = $_FILES['fichier']['tmp_name'];
if( !is_uploaded_file($tmp_file) )
{
exit("Le fichier est introuvable");
}
//RETAILLE IMAGE
$ImageChoisie = imagecreatefromjpeg($tmp_file);
$TailleImageChoisie = getimagesize($tmp_file);
$NouvelleLargeur_mini = 100; //Largeur choisie à 100px mais modifiable
$NouvelleLargeur_med = 600; //Largeur choisie à 600px mais modifiable
$Reduction = ( ($NouvelleLargeur_mini * 100)/$TailleImageChoisie[0] );
$NouvelleHauteur_mini = ( ($TailleImageChoisie[1] * $Reduction)/100 );
$NouvelleImage_mini = imagecreatetruecolor($NouvelleLargeur_mini , $NouvelleHauteur_mini ) or die ("Erreur");
imagecopyresampled($NouvelleImage_mini , $ImageChoisie , 0,0, 0,0, $NouvelleLargeur_mini, $NouvelleHauteur_mini, $TailleImageChoisie[0],$TailleImageChoisie[1]);
$Reduction = ( ($NouvelleLargeur_med * 100)/$TailleImageChoisie[0] );
$NouvelleHauteur_med = ( ($TailleImageChoisie[1] * $Reduction)/100 );
$NouvelleImage_med = imagecreatetruecolor($NouvelleLargeur_med , $NouvelleHauteur_med ) or die ("Erreur");
imagecopyresampled($NouvelleImage_med , $ImageChoisie , 0,0, 0,0, $NouvelleLargeur_med, $NouvelleHauteur_med, $TailleImageChoisie[0],$TailleImageChoisie[1]);
imagedestroy($ImageChoisie);
$NomImageExploitable = time();
imagejpeg($NouvelleImage_mini , '../photos/'.$NomImageExploitable.'-mini.jpg', 100);
imagejpeg($NouvelleImage_med , '../photos/'.$NomImageExploitable.'-med.jpg', 100);
$LienImageNews = '../photos/'.$NomImageExploitable.'.jpg';
// on vérifie maintenant l'extension
$type_file = $_FILES['fichier']['type'];
if( !strstr($type_file, 'jpg') && !strstr($type_file, 'jpeg') && !strstr($type_file, 'bmp') && !strstr($type_file, 'gif') && !strstr($type_file, 'png') )
{
exit("Le fichier n'est pas une image");
}
// on copie le fichier dans le dossier de destination
$name_file = $NomImageExploitable.'.jpg';
if( !move_uploaded_file($tmp_file, $content_dir . $name_file) )
{
exit("Impossible de copier le fichier dans $content_dir");
}
$sql= 'INSERT INTO images VALUES ("", "'.$_POST["titre"].'", "'.$NomImageExploitable.'", "'.$_POST["image"].'")';
$res = mysql_query($sql) or die(mysql_error());
if ($res)
{
$erreurTxt = $successTxT = "";
if ($erreurTxt == "") {
$successTxT = "<br /><span class='Style1'>Votre image a bien été ajoutée</span>";
}
if ($erreurTxt == "") {
//message envoyé
echo "<div class='success'>".$successTxT."</div>"; //vert
} else {
echo "<div class='error'><ul>".$erreurTxt."</ul></div>"; //rouge
}
//echo 'Le fichier a bien été envoyé';
}
//echo "Le fichier a bien été envoyé";
}
?>
<form method="post" enctype="multipart/form-data" action="ajout_photos.php">
<p>
Choisir un fichier<br />
<input type="file" name="fichier" size="30">
</p>
<p>
Choisir une galerie<br />
<select name="image" id="image">
<?php
$sql = 'SELECT id_gallerie,nom_gallerie FROM gallerie ORDER BY id_gallerie DESC';
$query = mysql_query($sql) or die ("Problème Requete SQL");
while ($ligne = mysql_fetch_assoc ($query)) {
$nodept = $ligne ["nodept"];
$nomdept = $ligne ["nom"];
echo '<option value = "'.$ligne["id_gallerie"].'">'.$ligne["nom_gallerie"].'</option>';
}
?>
</select>
</p>
<!--
<p>Titre de la photo<br />
<input name="titre" type="text" />
</p>
<br />
-->
<input type="submit" name="upload" value="Envoyer" id="btn_upload">
</form>
Merci d'avance aux personnes qui prendront quelques minutes pour lire et répondre à mon post ;)
J'ai créé une galerie photos sur mon site qui génère des minis et des mediums en même temps, seulement la page d'ajout de photos ne digère pas les .PNG ou les .GIF contrairement aux .JPG qui passent niquel.
Lorsque je veux envoyer un fichier .PNG ou .GIF, voici le message que le serveur me renvoie :
Warning: imagecreatefromjpeg() [function.imagecreatefromjpeg]: gd-jpeg: JPEG library reports unrecoverable error: in /mon_site/www/ajout_photos.php on line 13
Warning: imagecreatefromjpeg() [function.imagecreatefromjpeg]: '/tmp/phpc6NzXQ' is not a valid JPEG file in /mon_site/www/ajout_photos.php on line 13
Warning: imagecopyresampled(): supplied argument is not a valid Image resource in /mon_site/www/ajout_photos.php on line 23
Warning: imagecopyresampled(): supplied argument is not a valid Image resource in /mon_site/www/ajout_photos.php on line 30
Warning: imagedestroy(): supplied argument is not a valid Image resource in /mon_site/www/ajout_photos.php on line 32
Warning: move_uploaded_file(../photos/1262624241image/png) [function.move-uploaded-file]: failed to open stream: No such file or directory in /mon_site/www/ajout_photos.php on line 51
Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/phpc6NzXQ' to '../photos/1262624241image/png' in /mon_site/www/ajout_photos.php on line 51
Impossible de copier le fichier dans ../photos/
Pour que vous puissiez mieux interpréter le problème, voici le code de ma page ajout_photos.php :
<?php
if( isset($_POST['upload']) ) // si formulaire soumis
{
$content_dir = '../photos/'; // dossier où sera déplacé le fichier
$tmp_file = $_FILES['fichier']['tmp_name'];
if( !is_uploaded_file($tmp_file) )
{
exit("Le fichier est introuvable");
}
//RETAILLE IMAGE
$ImageChoisie = imagecreatefromjpeg($tmp_file);
$TailleImageChoisie = getimagesize($tmp_file);
$NouvelleLargeur_mini = 100; //Largeur choisie à 100px mais modifiable
$NouvelleLargeur_med = 600; //Largeur choisie à 600px mais modifiable
$Reduction = ( ($NouvelleLargeur_mini * 100)/$TailleImageChoisie[0] );
$NouvelleHauteur_mini = ( ($TailleImageChoisie[1] * $Reduction)/100 );
$NouvelleImage_mini = imagecreatetruecolor($NouvelleLargeur_mini , $NouvelleHauteur_mini ) or die ("Erreur");
imagecopyresampled($NouvelleImage_mini , $ImageChoisie , 0,0, 0,0, $NouvelleLargeur_mini, $NouvelleHauteur_mini, $TailleImageChoisie[0],$TailleImageChoisie[1]);
$Reduction = ( ($NouvelleLargeur_med * 100)/$TailleImageChoisie[0] );
$NouvelleHauteur_med = ( ($TailleImageChoisie[1] * $Reduction)/100 );
$NouvelleImage_med = imagecreatetruecolor($NouvelleLargeur_med , $NouvelleHauteur_med ) or die ("Erreur");
imagecopyresampled($NouvelleImage_med , $ImageChoisie , 0,0, 0,0, $NouvelleLargeur_med, $NouvelleHauteur_med, $TailleImageChoisie[0],$TailleImageChoisie[1]);
imagedestroy($ImageChoisie);
$NomImageExploitable = time();
imagejpeg($NouvelleImage_mini , '../photos/'.$NomImageExploitable.'-mini.jpg', 100);
imagejpeg($NouvelleImage_med , '../photos/'.$NomImageExploitable.'-med.jpg', 100);
$LienImageNews = '../photos/'.$NomImageExploitable.'.jpg';
// on vérifie maintenant l'extension
$type_file = $_FILES['fichier']['type'];
if( !strstr($type_file, 'jpg') && !strstr($type_file, 'jpeg') && !strstr($type_file, 'bmp') && !strstr($type_file, 'gif') && !strstr($type_file, 'png') )
{
exit("Le fichier n'est pas une image");
}
// on copie le fichier dans le dossier de destination
$name_file = $NomImageExploitable.'.jpg';
if( !move_uploaded_file($tmp_file, $content_dir . $name_file) )
{
exit("Impossible de copier le fichier dans $content_dir");
}
$sql= 'INSERT INTO images VALUES ("", "'.$_POST["titre"].'", "'.$NomImageExploitable.'", "'.$_POST["image"].'")';
$res = mysql_query($sql) or die(mysql_error());
if ($res)
{
$erreurTxt = $successTxT = "";
if ($erreurTxt == "") {
$successTxT = "<br /><span class='Style1'>Votre image a bien été ajoutée</span>";
}
if ($erreurTxt == "") {
//message envoyé
echo "<div class='success'>".$successTxT."</div>"; //vert
} else {
echo "<div class='error'><ul>".$erreurTxt."</ul></div>"; //rouge
}
//echo 'Le fichier a bien été envoyé';
}
//echo "Le fichier a bien été envoyé";
}
?>
<form method="post" enctype="multipart/form-data" action="ajout_photos.php">
<p>
Choisir un fichier<br />
<input type="file" name="fichier" size="30">
</p>
<p>
Choisir une galerie<br />
<select name="image" id="image">
<?php
$sql = 'SELECT id_gallerie,nom_gallerie FROM gallerie ORDER BY id_gallerie DESC';
$query = mysql_query($sql) or die ("Problème Requete SQL");
while ($ligne = mysql_fetch_assoc ($query)) {
$nodept = $ligne ["nodept"];
$nomdept = $ligne ["nom"];
echo '<option value = "'.$ligne["id_gallerie"].'">'.$ligne["nom_gallerie"].'</option>';
}
?>
</select>
</p>
<!--
<p>Titre de la photo<br />
<input name="titre" type="text" />
</p>
<br />
-->
<input type="submit" name="upload" value="Envoyer" id="btn_upload">
</form>
Merci d'avance aux personnes qui prendront quelques minutes pour lire et répondre à mon post ;)
A voir également:
- Insérer PNG et GIF dans ma galerie photo
- Insérer vidéo dans powerpoint - Guide
- Galerie photo en ligne gratuite - Guide
- Google photo - Télécharger - Albums photo
- Photo aérienne de ma maison - Guide
- Comment masquer une photo dans la galerie - Guide
13 réponses
Vérifies le type MIME :
if($tmp_file['type'] == 'image/gif') $ImageChoisie = imagecreatefromgif($tmp_file); if($tmp_file['type'] == 'image/png') $ImageChoisie = imagecreatefrompng($tmp_file); ...
jean.miche
Messages postés
90
Date d'inscription
Statut
Membre
Dernière intervention
1
Merci avion-f16, mais je comprends le fond mais pas la forme : je comprends la démarche mais ne comprends pas comment intégrer ceci à mon code.
À la place de la ligne suivante :
$ImageChoisie = imagecreatefromjpeg($tmp_file);
Ok, mais dans ce cas il m'indique un warning lors de chaque ligne où est utilisée la variable $ImageChoisie :
imagecopyresampled($NouvelleImage_mini , $ImageChoisie , 0,0, 0,0, $NouvelleLargeur_mini, $NouvelleHauteur_mini, $TailleImageChoisie[0],$TailleImageChoisie[1]);
imagecopyresampled($NouvelleImage_med , $ImageChoisie , 0,0, 0,0, $NouvelleLargeur_med, $NouvelleHauteur_med, $TailleImageChoisie[0],$TailleImageChoisie[1]);
imagedestroy($ImageChoisie);
imagecopyresampled($NouvelleImage_mini , $ImageChoisie , 0,0, 0,0, $NouvelleLargeur_mini, $NouvelleHauteur_mini, $TailleImageChoisie[0],$TailleImageChoisie[1]);
imagecopyresampled($NouvelleImage_med , $ImageChoisie , 0,0, 0,0, $NouvelleLargeur_med, $NouvelleHauteur_med, $TailleImageChoisie[0],$TailleImageChoisie[1]);
imagedestroy($ImageChoisie);
Normal que .gif et .jpeg (.jpg) ne passe pas.
Regarde ce que tu as écris :
Remplace bien par ce que F16 t'as donnée !
Bon courage ;)
Regarde ce que tu as écris :
$ImageChoisie = imagecreatefromjpeg($tmp_file);
Remplace bien par ce que F16 t'as donnée !
Bon courage ;)
Comme je te l'ai dit, au lieu de créer directement l'image dans $ImageChoisie, tu vérifies quel est le type de l'image afin de faire appelle à la bonne fonction.
if($tmp_file['type'] == 'image/jpeg' || $tmp_file['type'] == 'image/jpg') { $ImageChoisie = imagecreatefromjpeg($tmp_file); } elseif($tmp_file['type'] == 'image/png') { $ImageChoisie = imagecreatefrompng($tmp_file); } elseif($tmp_file['type'] == 'image/gif') { $ImageChoisie = imagecreatefromgif($tmp_file); }
Oui avion-f16, ça a été fait suite à tes premières réponses. Ce que je ne comprends pas, c'est pourquoi j'ai ensuite un warning sur les lignes :
imagecopyresampled($NouvelleImage_mini , $ImageChoisie , 0,0, 0,0, $NouvelleLargeur_mini, $NouvelleHauteur_mini, $TailleImageChoisie[0],$TailleImageChoisie[1]); imagecopyresampled($NouvelleImage_med , $ImageChoisie , 0,0, 0,0, $NouvelleLargeur_med, $NouvelleHauteur_med, $TailleImageChoisie[0],$TailleImageChoisie[1]); imagedestroy($ImageChoisie);
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Quelle est l'erreur ?
Le code PHP doit être comme suit alors ?
Je t'ai mis en gras les lignes sur lesquelles j'ai droit à des warnings.
Merci ;)
<?php if( isset($_POST['upload']) ) // si formulaire soumis { $content_dir = '../photos/'; // dossier où sera déplacé le fichier $tmp_file = $_FILES['fichier']['tmp_name']; if( !is_uploaded_file($tmp_file) ) { exit("Le fichier est introuvable"); } //RETAILLE IMAGE if($tmp_file['type'] == 'image/jpeg' || $tmp_file['type'] == 'image/jpg') { $ImageChoisie = imagecreatefromjpeg($tmp_file); } elseif($tmp_file['type'] == 'image/png') { $ImageChoisie = imagecreatefrompng($tmp_file); } elseif($tmp_file['type'] == 'image/gif') { $ImageChoisie = imagecreatefromgif($tmp_file); } $TailleImageChoisie = getimagesize($tmp_file); $NouvelleLargeur_mini = 100; //Largeur choisie à 100px mais modifiable $NouvelleLargeur_med = 600; //Largeur choisie à 600px mais modifiable $Reduction = ( ($NouvelleLargeur_mini * 100)/$TailleImageChoisie[0] ); $NouvelleHauteur_mini = ( ($TailleImageChoisie[1] * $Reduction)/100 ); $NouvelleImage_mini = imagecreatetruecolor($NouvelleLargeur_mini , $NouvelleHauteur_mini ) or die ("Erreur"); imagecopyresampled($NouvelleImage_mini , $ImageChoisie , 0,0, 0,0, $NouvelleLargeur_mini, $NouvelleHauteur_mini, $TailleImageChoisie[0],$TailleImageChoisie[1]); $Reduction = ( ($NouvelleLargeur_med * 100)/$TailleImageChoisie[0] ); $NouvelleHauteur_med = ( ($TailleImageChoisie[1] * $Reduction)/100 ); $NouvelleImage_med = imagecreatetruecolor($NouvelleLargeur_med , $NouvelleHauteur_med ) or die ("Erreur"); imagecopyresampled($NouvelleImage_med , $ImageChoisie , 0,0, 0,0, $NouvelleLargeur_med, $NouvelleHauteur_med, $TailleImageChoisie[0],$TailleImageChoisie[1]); imagedestroy($ImageChoisie); $NomImageExploitable = time(); imagejpeg($NouvelleImage_mini , '../photos/'.$NomImageExploitable.'-mini.jpg', 100); imagejpeg($NouvelleImage_med , '../photos/'.$NomImageExploitable.'-med.jpg', 100); $LienImageNews = '../photos/'.$NomImageExploitable.'.jpg'; // on vérifie maintenant l'extension $type_file = $_FILES['fichier']['type']; if( !strstr($type_file, 'jpg') && !strstr($type_file, 'jpeg') && !strstr($type_file, 'bmp') && !strstr($type_file, 'gif') && !strstr($type_file, 'png') ) { exit("Le fichier n'est pas une image"); } // on copie le fichier dans le dossier de destination $name_file = $NomImageExploitable.'.jpg'; if( !move_uploaded_file($tmp_file, $content_dir . $name_file) ) { exit("Impossible de copier le fichier dans $content_dir"); } $sql= 'INSERT INTO images VALUES ("", "'.$_POST["titre"].'", "'.$NomImageExploitable.'", "'.$_POST["image"].'")'; $res = mysql_query($sql) or die(mysql_error()); if ($res) { $erreurTxt = $successTxT = ""; if ($erreurTxt == "") { $successTxT = "<br /><span class='Style1'>Votre image a bien été ajoutée</span>"; } if ($erreurTxt == "") { //message envoyé echo "<div class='success'>".$successTxT."</div>"; //vert } else { echo "<div class='error'><ul>".$erreurTxt."</ul></div>"; //rouge } //echo 'Le fichier a bien été envoyé'; } //echo "Le fichier a bien été envoyé"; } ?>
Je t'ai mis en gras les lignes sur lesquelles j'ai droit à des warnings.
Merci ;)
L'erreur est que j'ai un warning pour les fonctions imagecopyresampled et imagedestroy qui utilisent toutes les deux la variables $ImageChoisie. Pourtant on a mis une condition pour type d'image.
Si j'upload un png, j'ai une image toute noire dans ma galerie.
Si j'upload un png, j'ai une image toute noire dans ma galerie.
Personne n'aurait de suggestion ?
Merci ;)
Merci ;)
avion-f16, j'ai remplacé
mais j'ai une erreur de type
J'ai oublié de remplacé quelque chose ? Merci
$ImageChoisiepar
if($tmp_file['type'] == 'image/jpeg' || $tmp_file['type'] == 'image/jpg') { $ImageChoisie = imagecreatefromjpeg($tmp_file); } elseif($tmp_file['type'] == 'image/png') { $ImageChoisie = imagecreatefrompng($tmp_file); } elseif($tmp_file['type'] == 'image/gif') { $ImageChoisie = imagecreatefromgif($tmp_file); }
mais j'ai une erreur de type
Warning: imagecopyresampled(): supplied argument is not a valid Image resourcepour les lignes
imagecopyresampledet
imagedestroy.
J'ai oublié de remplacé quelque chose ? Merci
L'erreur n'est pas dans ce morceaux.
Et quand tu réponds à un message, inutile de me le signalé, je le vois en gras dans la liste à droite.
Et quand tu réponds à un message, inutile de me le signalé, je le vois en gras dans la liste à droite.
D'accord, saurais-tu me dire où est l'erreur. A quel niveau du code ?
Et ok, je vois la liste des topics en gras sur la droite, ça me l'a fait ;)
merci
Et ok, je vois la liste des topics en gras sur la droite, ça me l'a fait ;)
merci
C'est là où il y a imagecopyresampled()
L'erreur signifie que le premier paramètre n'est pas une ressource image valide.
L'erreur signifie que le premier paramètre n'est pas une ressource image valide.
c'est à dire qu'il faut aussi remplacer imagecopyresampled() par
?
à priori non car c'est une fonction ...
que dois-je donc faire s'il te plaît ?
if($tmp_file['type'] == 'image/jpeg' || $tmp_file['type'] == 'image/jpg') { $ImageChoisie = imagecreatefromjpeg($tmp_file); } elseif($tmp_file['type'] == 'image/png') { $ImageChoisie = imagecreatefrompng($tmp_file); } elseif($tmp_file['type'] == 'image/gif') { $ImageChoisie = imagecreatefromgif($tmp_file); }
?
à priori non car c'est une fonction ...
que dois-je donc faire s'il te plaît ?