imagecreatefromjpeg

Répondre
fausto
fausto
Déconnecté
bonjour,

je souhaiterais créer une miniature depuis une jpg uploadée via un formulaire
et je n'arrive pas à la créer
  1.  
  2. <?php     
  3. //--------------------------------------------------------------------------------------------  
  4. //test photo  
  5. //--------------------------------------------------------------------------------------------  
  6. if (isset($_FILES['photo']))  
  7. //--------------------------------------------------------------------------------------------  
  8. {  
  9.  
  10. $photo=$_FILES['photo']['name'];  
  11. $size=$_FILES['photo']['size'];  
  12. $tmp=$_FILES['photo']['tmp_name'];  
  13. $type=$_FILES['photo']['type'];  
  14. //on récup la taille de l'image  
  15. list($width,$height)=getimagesize($tmp);  
  16. if (is_uploaded_file($tmp))  
  17. /////////////////////////////////////////////////////////////////////////////////////////////  
  18. {  
  19. //vérif du type de l'image de son poids et de sa taille (jpg <=500Ko et <=800 * 600 px)  
  20. if ($type="image/jpg" OR $type="image/gif" && $size<=500000 && $width<=800 && $height<=600)  
  21. //_________________________________________________________________________________________  
  22. { 
  23.    $photo = preg_replace ("` `i","",$photo); 
  24.    if (file_exists(''.$photo)) 
  25.    //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
  26.    { 
  27.       $nom_final=preg_replace("`.jpg`is",date("U").".jpg",$photo); 
  28.    //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
  29.       } 
  30.       else 
  31.       //::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
  32.       { 
  33.       $nom_final=$photo; 
  34.       //::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
  35.       } 
  36.  
  37.              // on déplace l'image ds le répertoire final 
  38.       move_uploaded_file($tmp,'jpg/'.$nom_final); 
  39.       echo "L'image a &eacute;t&eacute; upload&eacute;e avec succ&egrave;s";  
  40. //_________________________________________________________________________________________ 
  41.       } 
  42.       else 
  43.       //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
  44.       { 
  45.       echo "<br><br><br><br>"; 
  46.       echo "Erreur:"; 
  47.       echo "<br>"; 
  48.       echo "le fichier doit être en format jpg, 800 * 600px max et peser moins de 500Ko!"; 
  49.       echo "<br><br><br><br>"; 
  50.       echo "<a href="/page.php?item=post"><b>back</b></a>"; 
  51.       exit(); 
  52.       //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
  53.       }  
  54. /////////////////////////////////////////////////////////////////////////////////////////////       
  55.       } 
  56.       $photo="<img src="jpg/$nom_final">";  
  57. //--------------------------------------------------------------------------------------------  
  58. // création vignettes  
  59. $imgname = "jpg/$nom_final";  
  60. $vignettes = @imagecreatefromjpeg($imgname); /* Tentative d'ouverture */  
  61. if (!$vignettes) { /* Vérification */  
  62. $vignettes = imagecreatetruecolor(150, 30); /* Création d'une image blanche */  
  63. $bgc = imagecolorallocate($vignettes, 255, 255, 255);  
  64. $tc = imagecolorallocate($vignettes, 0, 0, 0);  
  65. imagefilledrectangle($vignettes, 0, 0, 150, 30, $bgc);  
  66. // Affichage d'un message d'erreur  
  67. imagestring($vignettes, 1, 5, 5, "Erreur de chargement de l'image$imgname", $tc);  
  68. }  
  69. echo $vignettes;  
  70. exit;  
  71. //-------------------------------------------------------------------------------------------- 
  72.       
  73. }  
  74.  
  75. ?>
  76.  



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
i M@N
i M@N
Déconnecté
One Love, One Heart, One Unity.
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/ ...

@+...
LA GLOBULE
LA GLOBULE
Déconnecté
111 111 111 x 111 111 111 = 12 345 678 987 654 321
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.
fausto
fausto
Déconnecté
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)

  1.  
  2. <?  
  3. //Cookies du pseudo  
  4. //*****************  
  5.  
  6. $pseudo = $_POST['pseudo'];  
  7.  
  8. //Enregistre le pseudo actuel  
  9. if(($pseudo != "")&&($pseudo != "Anonyme"))setcookie ("cookie_rep", $pseudo, time()+3600*24*365); //valable 1 année  
  10.  
  11. //Lecture du pseudo  
  12. $cook_rep= $HTTP_COOKIE_VARS["cookie_rep"];  
  13. if(!isset($cook_rep))$cook_rep = "Anonyme";  
  14. if($pseudo == "")$pseudo = $cook_rep;  
  15. ?> 
  16.  
  17. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  18. <html xmlns="http://www.w3.org/1999/xhtml">
  19. <head>
  20. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  21. <meta name="description" content="Upload de photo avec redimentionnement" />
  22. <title>upload</title>
  23. </head>
  24.  
  25. <body bgcolor="#FFFFFF"><br>
  26. <p align="center">
  27.  
  28. <?php  
  29. //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------  
  30. // création vignettes depuis photo  
  31. //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------  
  32.  
  33. //----------------------------  
  34. // DEFINITION DES VARIABLES  
  35. //----------------------------  
  36.  
  37.  
  38. $test_local = 0;  
  39.  
  40. $extension = 'image/jpeg';  
  41. $quality = 90; // Qualité de la compression JPEG  
  42. $kb_max = 70000; // Valeur max en octets de l'image finale  
  43. $max_size = 1000000; // Taille max en octets du fichier à uploader pour traitement  
  44. $largeurDestination = 150; // Largeur max de l'image finale en pixel  
  45. $nom_rep = "nom_du_dossier_miniatures";  
  46. $site = "http://".$_SERVER["HTTP_HOST"]."/nom_du_dossier/"; // Adresse du dossier où est installé le script (fin avec /)  
  47.  
  48. //---------------------------------------------  
  49. // DEFINITION DES VARIABLES LIEES AUX FICHIERS  
  50. //---------------------------------------------  
  51.  
  52. $nom_file = $_FILES['fichier']['name'];  
  53. $taille = $_FILES['fichier']['size'];  
  54. $tmp = $_FILES['fichier']['tmp_name'];  
  55. $ext_img = $_FILES['fichier']['type'];  
  56. $lien_dossier = $nom_rep;  
  57.  
  58. $verif_exist = $nom_rep;  
  59. $verif_exist .= "/";  
  60. $verif_exist .= $nom_file;  
  61.  
  62. //----------------------  
  63. // SCRIPT D'UPLOAD  
  64. //----------------------  
  65.  
  66. //Vérifie l'existance du dossier de réception  
  67. //*******************************************  
  68. if(!file_exists($lien_dossier))  
  69. {  
  70. //Crée le répertoire de classement des photos s'il n'existe pas  
  71. if(!mkdir($lien_dossier,0755))  
  72. {  
  73. echo "Impossible de créer le répertoire : ",$lien_dossier," --> upload interrompu!!!";  
  74. exit;  
  75. }  
  76. }  
  77.  
  78. //Enlever les accents  
  79. //*******************  
  80. function enlever_accents($dest_fichier){  
  81. $dest_fichier = strtr($dest_fichier, 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ/',  
  82. 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy/');  
  83. //remplacer les caracteres autres que lettres, chiffres et point par _  
  84. $dest_fichier = preg_replace('/([^.a-z/0-9]+)/i', '_', $dest_fichier);  
  85. return $dest_fichier;  
  86. }  
  87.  
  88. $nom_rep = enlever_accents($nom_rep);  
  89. $pseudo = enlever_accents($pseudo);  
  90. $verif_exist = enlever_accents($verif_exist);  
  91. $nom_file = enlever_accents($nom_file);  
  92.  
  93. //Début de la procédure d'upload  
  94. //******************************  
  95. if(!empty($_POST['posted'])) {  
  96. // On vérifie si le champ est rempli  
  97. if(!empty($nom_file) && (!empty($pseudo))) {  
  98. //On vérifie que le nom du fichier n'existe pas  
  99. if(!file_exists($verif_exist)) {  
  100. // On vérifie l'extension du fichier  
  101. if($ext_img == $extension) {  
  102. // On récupère les dimensions du fichier  
  103. $infos_img = getimagesize($tmp);  
  104. // On vérifie la taille de l'image  
  105. if($taille <= $max_size) {  
  106. //upload du fichier 
  107.          
  108. if(move_uploaded_file($tmp,$nom_rep."/".$nom_file)) {  
  109. echo '<b><font color=red>vignette uploadée avec succès !</font></b><br>'; 
  110.                
  111. //calcul et redimension  
  112. //*********************  
  113. $fichierSource = $nom_rep;  
  114. $fichierSource .= "/";  
  115. $fichierSource .= $nom_file;  
  116. $fichierSource = $fichierSource;  
  117. //hauteur / largeur  
  118. $rapport = $infos_img[1] / $infos_img[0];  
  119. //Dimension de sortie  
  120. $hauteurDestination = $largeurDestination * $rapport;  
  121.  
  122. //Création de l'image  
  123. //*******************  
  124. $source = imagecreatefromjpeg($fichierSource);  
  125.  
  126. $largeurSource = imagesx($source);  
  127. $hauteurSource = imagesy($source);  
  128.  
  129. if($largeurSource > $largeurDestination){  
  130. $im = ImageCreateTrueColor ($largeurDestination, $hauteurDestination)  
  131. or die ("Erreur lors de la création de l'image");  
  132. }  
  133. else{  
  134. $im = ImageCreateTrueColor ($infos_img[0], $infos_img[1])  
  135. or die ("Erreur lors de la création de l'image");  
  136. $largeurDestination = $infos_img[0];  
  137. $hauteurDestination = $infos_img[1];  
  138. }  
  139.  
  140. //Redimentionnement  
  141. //*****************  
  142. ImageCopyResampled($im, $source, 0, 0, 0, 0, $largeurDestination, $hauteurDestination, $largeurSource, $hauteurSource);  
  143.  
  144. //Création du fichier de sortie  
  145. //*****************************  
  146. $fh=fopen($fichierSource,'w');  
  147. fclose($fh);  
  148. ImageJpeg ($im,$fichierSource,$quality);  
  149. $size_file = filesize($fichierSource);  
  150.  
  151. //Test de la taille en kb de l'image définitive  
  152. //*********************************************  
  153. $size_file = filesize($fichierSource);  
  154. $iteration = 0;  
  155. while($size_file > $kb_max){  
  156. if($quality > 0)$quality -= 5;  
  157. else {$quality = "Erreur!!!"; break;}  
  158. unlink($fichierSource);  
  159. $fh=fopen($fichierSource,'w');  
  160. fclose($fh);  
  161. ImageJpeg ($im,$fichierSource,$quality);  
  162. $size_file = filesize($fichierSource);  
  163. $iteration++;  
  164. }  
  165.  
  166. $lien_image = $site.$nom_rep."/".$nom_file;  
  167. //echo "L'image ci-dessous a été redimentionnée et chargée sur le serveur";  
  168. //echo "Lien de l'image : ".$lien_image."";  
  169. echo "<img border='0' src='".$lien_image."'>";               
  170.                }            
  171.  
  172. } 
  173.             else {  
  174. // Sinon on affiche une erreur système  
  175. 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>';  
  176. }  
  177. } else {  
  178. // Sinon on affiche une erreur pour les dimensions et taille de l'image  
  179. echo "<b>La taille du fichier dépasse la taille maximale autorisée de$max_sizeoctets!</b>";  
  180. }  
  181. } else {  
  182. // Sinon on affiche une erreur pour l'extension  
  183. echo '<font color=red><b><u>ECHEC DE L'ENVOI</u><br><br>Votre image ne comporte pas l'extension .jpg !</b></font>';  
  184. }  
  185. } else {  
  186. //Sinon on demande de renommer  
  187. 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>';
  188. }
  189. } else {
  190. // Sinon on affiche une erreur pour le champ vide
  191. echo '<font color=red><b><u>ECHEC DE L'ENVOI</u><br><br>Aucune photo sélectionnée ou aucun pseudo entré!</b></font>';  
  192. }  
  193. //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------  
  194. // FIN création vignettes depuis photo  
  195. //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------  
  196.  
  197. ?>
  198.  
  199.  
  200. <form enctype="multipart/form-data" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
  201. <b>Envoyer le fichier :</b>
  202. <input type="hidden" name="posted" value="1" />
  203. <font color="#FFFFFF">Votre pseudo : </font><input name="pseudo" type="text" value="<?php echo $pseudo ?>" size="20" ><br><br>
  204.  
  205. <font color="#FFFFFF">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sélectionner la photo : </font><input name="fichier" id="fichier" type="file"><br><br>
  206. <input type="submit" value="Envoyer la photo" />
  207. </form>
  208.  
  209.  
  210. </body>
  211. </html>
  212.  


si vous avez une idée
Merci à vous

f
vengeur002
vengeur002
Déconnecté
La prog c est pas sorcier suffis juste de s'y coller ^^
salut

Va voir dans les coment faire y a un script qui fais exacteent la meme chose et qui fonctionne

smiley
fausto
fausto
Déconnecté
salut
effectivement!
merci
++
f
Répondre
Accès rapide :

Remonter Remonter
L'éditeur javascript - CSS - Gentoo - Tutoriaux PHP - Tutoriels PHP - Breizh Blog