imagecreatefromjpeg
bonjour,
je souhaiterais créer une miniature depuis une jpg uploadée via un formulaire
et je n'arrive pas à la créer
sur mon" echo vignettes" à la fin je n'arrive pas à recupérer le nom de la vignette
j'ai comme erreur : Resource#id8
bref, si vous avez une idée
Merci
F
je souhaiterais créer une miniature depuis une jpg uploadée via un formulaire
et je n'arrive pas à la créer
- <?php
- //--------------------------------------------------------------------------------------------
- //test photo
- //--------------------------------------------------------------------------------------------
- if (isset($_FILES['photo']))
- //--------------------------------------------------------------------------------------------
- {
- $photo=$_FILES['photo']['name'];
- $size=$_FILES['photo']['size'];
- $tmp=$_FILES['photo']['tmp_name'];
- $type=$_FILES['photo']['type'];
- //on récup la taille de l'image
- list($width,$height)=getimagesize($tmp);
- if (is_uploaded_file($tmp))
- /////////////////////////////////////////////////////////////////////////////////////////////
- {
- //vérif du type de l'image de son poids et de sa taille (jpg <=500Ko et <=800 * 600 px)
- if ($type="image/jpg" OR $type="image/gif" && $size<=500000 && $width<=800 && $height<=600)
- //_________________________________________________________________________________________
- {
- $photo = preg_replace ("` `i","",$photo);
- if (file_exists(''.$photo))
- //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- {
- $nom_final=preg_replace("`.jpg`is",date("U").".jpg",$photo);
- //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- }
- else
- //:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
- {
- $nom_final=$photo;
- //:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
- }
- // on déplace l'image ds le répertoire final
- move_uploaded_file($tmp,'jpg/'.$nom_final);
- echo "L'image a été uploadée avec succès";
- //_________________________________________________________________________________________
- }
- else
- //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
- {
- echo "<br><br><br><br>";
- echo "Erreur:";
- echo "<br>";
- echo "le fichier doit être en format jpg, 800 * 600px max et peser moins de 500Ko!";
- echo "<br><br><br><br>";
- echo "<a href="/page.php?item=post"><b>back</b></a>";
- exit();
- //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
- }
- /////////////////////////////////////////////////////////////////////////////////////////////
- }
- $photo="<img src="jpg/$nom_final">";
- //--------------------------------------------------------------------------------------------
- // création vignettes
- $imgname = "jpg/$nom_final";
- $vignettes = @imagecreatefromjpeg($imgname); /* Tentative d'ouverture */
- if (!$vignettes) { /* Vérification */
- $vignettes = imagecreatetruecolor(150, 30); /* Création d'une image blanche */
- $bgc = imagecolorallocate($vignettes, 255, 255, 255);
- $tc = imagecolorallocate($vignettes, 0, 0, 0);
- imagefilledrectangle($vignettes, 0, 0, 150, 30, $bgc);
- // Affichage d'un message d'erreur
- imagestring($vignettes, 1, 5, 5, "Erreur de chargement de l'image$imgname", $tc);
- }
- echo $vignettes;
- exit;
- //--------------------------------------------------------------------------------------------
- }
- ?>
sur mon" echo vignettes" à la fin je n'arrive pas à recupérer le nom de la vignette
j'ai comme erreur : Resource#id8
bref, si vous avez une idée
Merci
F
Hello.
Je dirais que $imgname = "jpg/$nom_final" n'est pas le chemin exact de l'image : il manque le début du chemin : http://www.site.com/dossier/image.jpg
Trouve ce chemin. Essaye de définir une variable $dossier qui serait le chemin du dossier de destination des images en relatif par rapport à ton script : $dossier = "../jpg/" ou "./jpg/ ...
@+...
Je dirais que $imgname = "jpg/$nom_final" n'est pas le chemin exact de l'image : il manque le début du chemin : http://www.site.com/dossier/image.jpg
Trouve ce chemin. Essaye de définir une variable $dossier qui serait le chemin du dossier de destination des images en relatif par rapport à ton script : $dossier = "../jpg/" ou "./jpg/ ...
@+...
C'est normal que ca affiche "Ressource id" vu que c'est le type de données de ta variable $vignettes.
Pour afficher l'image, utilise une fonction comme imagejpeg.
PS : iMan, on ne sait pas si le chemin est bon au faux, mais vu que $vignettes est de type ressource, il y a fort à parier que le chemin est bon.
Pour afficher l'image, utilise une fonction comme imagejpeg.
PS : iMan, on ne sait pas si le chemin est bon au faux, mais vu que $vignettes est de type ressource, il y a fort à parier que le chemin est bon.
hello,
Merci pour vos réponses,
en fait, je suis parti sur un autre fichier
mon but est d'uploader deux photos sur le serveur (dans deux dossiers)
- la photo "taille normale"
- la miniature créée à partir de la 1ère
(pour ce qui est de créer la miniature et de l'uploader, ça fonctionne, mais je n'arrive pas à uploader dans le même temps la photo "taille normale"
dans un autre dossier)
si vous avez une idée
Merci à vous
f
Merci pour vos réponses,
en fait, je suis parti sur un autre fichier
mon but est d'uploader deux photos sur le serveur (dans deux dossiers)
- la photo "taille normale"
- la miniature créée à partir de la 1ère
(pour ce qui est de créer la miniature et de l'uploader, ça fonctionne, mais je n'arrive pas à uploader dans le même temps la photo "taille normale"
dans un autre dossier)
- <?
- //Cookies du pseudo
- //*****************
- $pseudo = $_POST['pseudo'];
- //Enregistre le pseudo actuel
- if(($pseudo != "")&&($pseudo != "Anonyme"))setcookie ("cookie_rep", $pseudo, time()+3600*24*365); //valable 1 année
- //Lecture du pseudo
- $cook_rep= $HTTP_COOKIE_VARS["cookie_rep"];
- if(!isset($cook_rep))$cook_rep = "Anonyme";
- if($pseudo == "")$pseudo = $cook_rep;
- ?>
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
- <meta name="description" content="Upload de photo avec redimentionnement" />
- <title>upload</title>
- </head>
- <body bgcolor="#FFFFFF"><br>
- <p align="center">
- <?php
- //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
- // création vignettes depuis photo
- //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
- //----------------------------
- // DEFINITION DES VARIABLES
- //----------------------------
- $test_local = 0;
- $extension = 'image/jpeg';
- $quality = 90; // Qualité de la compression JPEG
- $kb_max = 70000; // Valeur max en octets de l'image finale
- $max_size = 1000000; // Taille max en octets du fichier à uploader pour traitement
- $largeurDestination = 150; // Largeur max de l'image finale en pixel
- $nom_rep = "nom_du_dossier_miniatures";
- $site = "http://".$_SERVER["HTTP_HOST"]."/nom_du_dossier/"; // Adresse du dossier où est installé le script (fin avec /)
- //---------------------------------------------
- // DEFINITION DES VARIABLES LIEES AUX FICHIERS
- //---------------------------------------------
- $nom_file = $_FILES['fichier']['name'];
- $taille = $_FILES['fichier']['size'];
- $tmp = $_FILES['fichier']['tmp_name'];
- $ext_img = $_FILES['fichier']['type'];
- $lien_dossier = $nom_rep;
- $verif_exist = $nom_rep;
- $verif_exist .= "/";
- $verif_exist .= $nom_file;
- //----------------------
- // SCRIPT D'UPLOAD
- //----------------------
- //Vérifie l'existance du dossier de réception
- //*******************************************
- if(!file_exists($lien_dossier))
- {
- //Crée le répertoire de classement des photos s'il n'existe pas
- if(!mkdir($lien_dossier,0755))
- {
- echo "Impossible de créer le répertoire : ",$lien_dossier," --> upload interrompu!!!";
- exit;
- }
- }
- //Enlever les accents
- //*******************
- function enlever_accents($dest_fichier){
- $dest_fichier = strtr($dest_fichier, 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ/',
- 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy/');
- //remplacer les caracteres autres que lettres, chiffres et point par _
- $dest_fichier = preg_replace('/([^.a-z/0-9]+)/i', '_', $dest_fichier);
- return $dest_fichier;
- }
- $nom_rep = enlever_accents($nom_rep);
- $pseudo = enlever_accents($pseudo);
- $verif_exist = enlever_accents($verif_exist);
- $nom_file = enlever_accents($nom_file);
- //Début de la procédure d'upload
- //******************************
- if(!empty($_POST['posted'])) {
- // On vérifie si le champ est rempli
- if(!empty($nom_file) && (!empty($pseudo))) {
- //On vérifie que le nom du fichier n'existe pas
- if(!file_exists($verif_exist)) {
- // On vérifie l'extension du fichier
- if($ext_img == $extension) {
- // On récupère les dimensions du fichier
- $infos_img = getimagesize($tmp);
- // On vérifie la taille de l'image
- if($taille <= $max_size) {
- //upload du fichier
- if(move_uploaded_file($tmp,$nom_rep."/".$nom_file)) {
- echo '<b><font color=red>vignette uploadée avec succès !</font></b><br>';
- //calcul et redimension
- //*********************
- $fichierSource = $nom_rep;
- $fichierSource .= "/";
- $fichierSource .= $nom_file;
- $fichierSource = $fichierSource;
- //hauteur / largeur
- $rapport = $infos_img[1] / $infos_img[0];
- //Dimension de sortie
- $hauteurDestination = $largeurDestination * $rapport;
- //Création de l'image
- //*******************
- $source = imagecreatefromjpeg($fichierSource);
- $largeurSource = imagesx($source);
- $hauteurSource = imagesy($source);
- if($largeurSource > $largeurDestination){
- $im = ImageCreateTrueColor ($largeurDestination, $hauteurDestination)
- or die ("Erreur lors de la création de l'image");
- }
- else{
- $im = ImageCreateTrueColor ($infos_img[0], $infos_img[1])
- or die ("Erreur lors de la création de l'image");
- $largeurDestination = $infos_img[0];
- $hauteurDestination = $infos_img[1];
- }
- //Redimentionnement
- //*****************
- ImageCopyResampled($im, $source, 0, 0, 0, 0, $largeurDestination, $hauteurDestination, $largeurSource, $hauteurSource);
- //Création du fichier de sortie
- //*****************************
- $fh=fopen($fichierSource,'w');
- fclose($fh);
- ImageJpeg ($im,$fichierSource,$quality);
- $size_file = filesize($fichierSource);
- //Test de la taille en kb de l'image définitive
- //*********************************************
- $size_file = filesize($fichierSource);
- $iteration = 0;
- while($size_file > $kb_max){
- if($quality > 0)$quality -= 5;
- else {$quality = "Erreur!!!"; break;}
- unlink($fichierSource);
- $fh=fopen($fichierSource,'w');
- fclose($fh);
- ImageJpeg ($im,$fichierSource,$quality);
- $size_file = filesize($fichierSource);
- $iteration++;
- }
- $lien_image = $site.$nom_rep."/".$nom_file;
- //echo "L'image ci-dessous a été redimentionnée et chargée sur le serveur";
- //echo "Lien de l'image : ".$lien_image."";
- echo "<img border='0' src='".$lien_image."'>";
- }
- }
- else {
- // Sinon on affiche une erreur système
- echo '<font color=red><b><u>ECHEC DE L'ENVOI</u><br><br>Problème lors de l'upload !</b><b>Erreur num : ', $_FILES['fichier']['error'], '</b></font>';
- }
- } else {
- // Sinon on affiche une erreur pour les dimensions et taille de l'image
- echo "<b>La taille du fichier dépasse la taille maximale autorisée de$max_sizeoctets!</b>";
- }
- } else {
- // Sinon on affiche une erreur pour l'extension
- echo '<font color=red><b><u>ECHEC DE L'ENVOI</u><br><br>Votre image ne comporte pas l'extension .jpg !</b></font>';
- }
- } else {
- //Sinon on demande de renommer
- echo '<font color=red><b><u>ECHEC DE L'ENVOI</u><br><br>Une image avec le même nom existe déjà! Renommer la photo et réessayer, Merci.</b></font>';
- }
- } else {
- // Sinon on affiche une erreur pour le champ vide
- echo '<font color=red><b><u>ECHEC DE L'ENVOI</u><br><br>Aucune photo sélectionnée ou aucun pseudo entré!</b></font>';
- }
- //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
- // FIN création vignettes depuis photo
- //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
- ?>
- <form enctype="multipart/form-data" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
- <b>Envoyer le fichier :</b>
- <input type="hidden" name="posted" value="1" />
- <font color="#FFFFFF">Votre pseudo : </font><input name="pseudo" type="text" value="<?php echo $pseudo ?>" size="20" ><br><br>
- <font color="#FFFFFF"> Sélectionner la photo : </font><input name="fichier" id="fichier" type="file"><br><br>
- <input type="submit" value="Envoyer la photo" />
- </form>
- </body>
- </html>
si vous avez une idée
Merci à vous
f
salut
Va voir dans les coment faire y a un script qui fais exacteent la meme chose et qui fonctionne
Va voir dans les coment faire y a un script qui fais exacteent la meme chose et qui fonctionne
salut
effectivement!
merci
++
f
effectivement!
merci
++
f
Accès rapide :
Remonter 

