redimensionner plusieurs images proportionnellement

page 1 page 2
Répondre
jacque99
jacque99
Déconnecté
jacque
Bonjour tout le monde,
Au fait, j’ai mon script qui permet de redimensionné une image proportionnellement qui marche bien et qui m'enregistre l'image avec un nom saisie sur une zone de texte sur un

répertoire.

Ce que je voulais modifier, c'est la possibilité de redimensionner la même image 3 fois (avec le nom saisi dans les textbox, et l'enregistré sur le serveur.
Merci pour toute indication qui peut m'aider à compléter mon script

  1.  
  2. <!------------------------------ page index.php------------------------------------>
  3.  
  4.  
  5. <html>
  6. <head></head>
  7. <body>
  8.    <!--On affiche le formulaire d'envoi d'une image-->
  9.    <center>
  10.    <br /><hr />
  11.  
  12.    <form method="post" enctype="multipart/form-data" action="upload.php">
  13.    <p>
  14.    
  15.    
  16.    
  17.     Le nom de l'image redimensionner avec 171 ,107
  18.     <input type="text" name="video"><br><br>
  19.    
  20.    
  21.    
  22.     Le nom de l'image redimensionner avec 200 ,200
  23.     <input type="text" name="video2"><br><br>
  24.    
  25.    
  26.     Le nom de l'image redimensionner avec 500 ,500
  27.     <input type="text" name="video3"><br><br>
  28.    
  29.    <input type="file" name="fichier" size="30">
  30.    <input type="submit" name="upload" value="Uploader">
  31.    </p>
  32.    </form>
  33.    </center>
  34.    
  35. </body>
  36. </html>
  37.  
  38. <!------------------------------ fin page index.php------------------------------------>
  39.  
  40. <!------------------------------ page upload.php------------------------------------>
  41.  
  42. <?php
  43.  
  44.  
  45. $nomImage=$_POST['video'];  
  46.  
  47. if( isset($_POST['upload']) ) // si formulaire soumis
  48. {  
  49. $content_dir = 'upload/'; // dossier où sera déplacé le fichier
  50.  
  51. $tmp_file = $_FILES  
  52.  
  53. ['fichier']['tmp_name'];  
  54.  
  55. if( !is_uploaded_file($tmp_file) )  
  56. {  
  57. exit("Le fichier est introuvable");  
  58. }  
  59.  
  60. // on vérifie maintenant l'extension
  61. $type_file =  
  62.  
  63. $_FILES['fichier']['type'];  
  64.  
  65. if( !strstr($type_file, 'jpg') && !strstr($type_file, 'jpeg') && !strstr($type_file, 'png') && !strstr($type_file, 'bmp') && !strstr($type_file,  
  66.  
  67. 'gif') )  
  68. {  
  69. exit("Le fichier n'est pas une image");  
  70. }  
  71.  
  72. // on copie le fichier dans le dossier de destination
  73.    
  74.    $ext = substr($_FILES['fichier']['name'],  
  75.  
  76. strrpos($_FILES['fichier']['name'], '.')); 
  77.  
  78.    $name_file = $nomImage.$ext; 
  79.    echo $name_file; 
  80.  
  81.  
  82.    //fonction pour changer les dimentions des fichiers
  83. function  
  84.  
  85. redimensionner($file, $maxwidth, $maxheight) {  
  86. /*
  87. $maxwidth = 171;
  88. $maxheight = 171;
  89. */  
  90. list($rawwidth, $rawheight, $type) = @getimagesize($file);  
  91.  
  92. if ($maxwidth <  
  93.  
  94. $rawwidth && $rawwidth >= $rawheight) {  
  95.  
  96. $width = $maxwidth;  
  97.  
  98. $height = ($width / $rawwidth) * $rawheight;  
  99.  
  100. }  
  101.  
  102. elseif ($maxheight < $rawheight && $rawheight >= $rawwidth) {  
  103.  
  104.  
  105.  
  106. $height = $maxheight;  
  107.  
  108. $width = ($height /$rawheight) * $rawwidth;  
  109.  
  110. }  
  111.  
  112. else {  
  113.  
  114. $height = $rawheight;  
  115.  
  116. $width = $rawwidth;  
  117.  
  118. }  
  119.  
  120. $imgbuffer = imagecreatetruecolor($width,  
  121.  
  122. $height);  
  123.  
  124. switch($type) {  
  125.  
  126. case 1: $image = imagecreatefromgif($file); break;  
  127.  
  128. case 2: $image = imagecreatefromjpeg($file); break;  
  129.  
  130. case 3: $image = imagecreatefrompng  
  131.  
  132. ($file); break;  
  133.  
  134. case 4: $image = imagecreatefrombmp($file); break;  
  135.  
  136. default: exit("Tried to create thumbnail from$file: not a valid image");  
  137.  
  138. }  
  139.  
  140. if (!$image) exit("Image
  141.  
  142. creation from$filefailed for an unknown reason. Probably not a valid image.");  
  143.  
  144. else {  
  145.  
  146. imagecopyresampled($imgbuffer, $image, 0, 0, 0, 0, $width, $height, $rawwidth,  
  147.  
  148. $rawheight);  
  149.  
  150. imageinterlace($imgbuffer);  
  151.  
  152. switch($type) { 
  153.  
  154.    
  155.    
  156.    
  157. case 1: $image = imagegif($imgbuffer, $file, 80); break;  
  158.  
  159. case 2: $image = imagejpeg  
  160.  
  161. ($imgbuffer, $file, 80); break;  
  162.  
  163. case 3: $image = imagepng($imgbuffer, $file, 7); break;  
  164.  
  165.  
  166.  
  167. }  
  168.  
  169. }  
  170.  
  171. }  
  172.  
  173.  
  174. if( preg_match('#[\x00-\x1F\x7F-\x9F/\\\\]#', $name_file) )  
  175.  
  176. {  
  177.  
  178. exit("Nom de
  179.  
  180. fichier non valide");  
  181.  
  182. }  
  183.  
  184. else if( !move_uploaded_file($tmp_file, $content_dir . $name_file) )  
  185.  
  186. {  
  187. exit("Impossible de copier le fichier dans$content_dir");  
  188. }  
  189.  
  190. redimensionner  
  191.  
  192. ($content_dir.$name_file, 171, 107);  
  193.  
  194. }  
  195. ?>
  196. <!------------------------------ fin page upload------------------------------------>
  197.  
moogli
moogli
Déconnecté
Il en faut peu pour être heureux !!!!!
salut,

la prochaine fois utilise le wall pour le code c'est le merdier la :/

pour ta question, je te déconseille de laisser libre court a l'imagination des gens pour tes trois tailles d'images par ce que ça va vite être le merdier.

donc
1/ tu upload le fichier telquel dans un répertoire temporaire, ensuite tu utilise ta fonction pour redimensionner en passant les différentes tailles a chaque fois.
2/ oublie pas de virer l'upload de ta fonction redimensionner.

3/ pour la clareté de ton code, évite de changer de ligne a chaque mot clef. Par exemple function redimensionner( ...)

4/ il faut que tu test toutes les variables que tu utilise avant de les utiliser pour éviter les problèmes.

@+
moogli
moogli
Déconnecté
Il en faut peu pour être heureux !!!!!
bon je suis sympa ce soir tu peut voir la chose comme ça http://www.lephpfacile.com/wall/wall-1924.php

faut ajouter le test du nom de fichier, mais perso je ne laisserais pas l'utilisateur le choix de ce nom c'est une source d'emmerde.
Je ne sais pas ce que tu en fait de ces images, mais si celle ci sont liée à une table MySQL (ou autre SGBD), ce qui semble le cas vu que tu ne va pas avoir une seul vidéo, je pense que générer le nom toi même à partir de l'id dans la table est une idée plus simple.
Par exemple pour la vidéo avec l'id 28 dans la table
(je te laisse déterminer le type d'image à partir du type mime, à partir de ça tu peut creer une variable $ext avec l'extension du fichier)
  1.  
  2. <?php
  3. // a la fin du code
  4. redimensionner('tmpsfolder/'.$nomImage,$content_dir.$idvideo.'-171x107.'.$ext, 171, 107);  
  5. redimensionner('tmpsfolder/'.$nomImage,$content_dir.$idvideo.'-200x200-'.$ext, 200, 200);  
  6. redimensionner('tmpsfolder/'.$nomImage,$content_dir.$idvideo.'-500x500-'.$ext, 500, 500);  
  7. ?> 


bon y surement plein de chose à faire mais c'est déjà bien.

@+
jacque99
jacque99
Déconnecté
jacque
Bonjour Moogli,
J'ai essayé t'ajouter tes lignes de code, mais ça marche pas, même j'ai fait copie coller du code complet, mais il ya une erreur
moogli
moogli
Déconnecté
Il en faut peu pour être heureux !!!!!
ro zut,

ben tu l'a corrigée ?

c'est quoi l'erreur ?

le code du wall plus les quelques lignes ci dessous sont une mouture de ce que tu a fait.

@+
jacque99
jacque99
Déconnecté
jacque
Malheureusement, je n’ai pas encore corrigé les bugs.
Voici le code d’erreur que j’ai :
Parse error: syntax error, unexpected '{' in C:\xampp\htdocs\testeRedimentionement\upload.php on line 35
En plus il ya pas la place pour entrer le nom de la 2eme et la 3eme image
LA GLOBULE
LA GLOBULE
Déconnecté
111 111 111 x 111 111 111 = 12 345 678 987 654 321
Tu as une erreur de syntaxe ligne 35 de ton fichier.

A priori, il manquerait un } dans ton code.
jacque99
jacque99
Déconnecté
jacque
je trouve pas ou exactement
LA GLOBULE
LA GLOBULE
Déconnecté
111 111 111 x 111 111 111 = 12 345 678 987 654 321
Montre nous ton code (en utilisant le BB-Code).

Normalement, si tu comptes les { et les } tu devrais trouver le même nombre.
Si ce n'est pas le même nombre, c'est qu'il en manque :)
jacque99
jacque99
Déconnecté
jacque
c'est le meme nombre
LA GLOBULE
LA GLOBULE
Déconnecté
111 111 111 x 111 111 111 = 12 345 678 987 654 321
Si c'est la même nombre, alors ca veut dire que tu as au moins deux erreurs :
- à un endroit, y'en a une en trop
- à un autre endroit, il en manque une
jacque99
jacque99
Déconnecté
jacque
Bonjour tout le monde,
J’ai reformulé ma question à nouveau
J'ai un scripte pour redimensionner les images proportionnellement, il prend la plus grande valeur (hauteur ou bien largeur) , et il redimensionne l'autre valeur proportionnellement.
Le seul problème sur ce script c'est qu’il ne permet pas de définir longueur max et hauteur max.

Par exemple, je voulais générer une image avec : width max : 171 et height max : 107
Si je prends une image avec les démentions width : 420, et height 298, le redimensionnement proportionnel cava donner :
420 >> 298
171 >> x
x= (298*171)/420= 121 (plus grand que je voulais comme hauteur en max 107).
Ce que j'image faire, mais je ne sais pas encore comment, c'est de lancer une boucle pour obtenir :
H >> W
171 >> 121 (supérieur de mon max, je ne prends pas) je fais H - 1
170 >> 120 (supérieur de mon max, je ne prends pas) je refais H-1
.....................................
.....................................
.....................................
150 >> 107 (<= 107, je le prends)
Ce qui est important pour moi c'est de respecter le redimensionnement proportionnel pou ne pas déformer l'image, et en même temps ne pas dépasser les démentions max.
Je suis à l'écoute de vos commentaires.
Merci d'avance



  1.  
  2. <!-------------------------------index.php -------------------------------------->
  3. <html>
  4. <head></head>
  5. <body>
  6.    <!--On affiche le formulaire d'envoi d'une image-->
  7.    <center>
  8.    <br /><hr />
  9.  
  10.    <form method="post" enctype="multipart/form-data" action="upload.php">
  11.    <p>
  12.    
  13.    
  14.    
  15.     Le nom de l'image redimensionner avec 95 ,95
  16.     <input type="text" name="video"><br><br>
  17.    
  18.    
  19.    
  20.    <input type="file" name="fichier" size="30">
  21.    <input type="submit" name="upload" value="Uploader">
  22.    </p>
  23.    </form>
  24.    </center>
  25.    
  26. </body>
  27. </html>
  28. <!----------------------------------- ------------------------------------------->
  29.  
  30.  
  31. <!------------------------------- upload.php -------------------------------------->
  32. <?php
  33.  
  34.  
  35. $nomImage=$_POST['video'];  
  36.  
  37. if( isset($_POST['upload']) ) // si formulaire soumis
  38. {  
  39. $content_dir = 'upload/'; // dossier où
  40.  
  41. sera déplacé le fichier  
  42.  
  43. $tmp_file = $_FILES['fichier']['tmp_name'];  
  44.  
  45. if( !is_uploaded_file($tmp_file) )  
  46. {  
  47. exit("Le
  48.  
  49. fichier est introuvable");  
  50. }  
  51.  
  52. // on vérifie maintenant l'extension
  53. $type_file = $_FILES['fichier']['type'];  
  54.  
  55. if( !  
  56.  
  57. strstr($type_file, 'jpg') && !strstr($type_file, 'jpeg') && !strstr($type_file, 'png') && !strstr($type_file, 'bmp') && !strstr  
  58.  
  59. ($type_file, 'gif') )  
  60. {  
  61. exit("Le fichier n'est pas une image");  
  62. }  
  63.  
  64. // on copie le fichier dans le dossier de
  65.  
  66. destination 
  67.    
  68.    $ext = substr($_FILES['fichier']['name'], strrpos($_FILES['fichier']['name'], '.')); 
  69.  
  70.    $name_file =  
  71.  
  72. $nomImage.$ext; 
  73.    echo $name_file; 
  74.  
  75.  
  76.    //fonction pour changer les dimentions des fichiers
  77. function redimensionner($file,  
  78.  
  79. $maxwidth, $maxheight) {  
  80.  
  81. list($rawwidth, $rawheight, $type) = @getimagesize($file);  
  82.  
  83. if ($maxwidth < $rawwidth && $rawwidth >=  
  84.  
  85. $rawheight) {  
  86.  
  87. $width = $maxwidth;  
  88.  
  89. $height = ($width / $rawwidth) * $rawheight;  
  90.  
  91. }  
  92.  
  93. elseif ($maxheight < $rawheight &&  
  94.  
  95. $rawheight >= $rawwidth) {  
  96.  
  97. $height = $maxheight;  
  98.  
  99. $width = ($height /$rawheight) * $rawwidth;  
  100.  
  101. }  
  102.  
  103. else {  
  104.  
  105. $height =  
  106.  
  107. $rawheight;  
  108.  
  109. $width = $rawwidth;  
  110.  
  111. }  
  112.  
  113. $imgbuffer = imagecreatetruecolor($width, $height);  
  114.  
  115. switch($type) {  
  116.  
  117. case 1: $image =  
  118.  
  119. imagecreatefromgif($file); break;  
  120.  
  121. case 2: $image = imagecreatefromjpeg($file); break;  
  122.  
  123. case 3: $image = imagecreatefrompng  
  124.  
  125. ($file); break;  
  126.  
  127. case 4: $image = imagecreatefrombmp($file); break;  
  128.  
  129. default: exit("Tried to create thumbnail from$file: not
  130.  
  131. a valid image");  
  132.  
  133. }  
  134.  
  135. if (!$image) exit("Image creation from$filefailed for an unknown reason. Probably not a valid image.");  
  136.  
  137.  
  138.  
  139. else {  
  140.  
  141. imagecopyresampled($imgbuffer, $image, 0, 0, 0, 0, $width, $height, $rawwidth, $rawheight);  
  142.  
  143. imageinterlace  
  144.  
  145. ($imgbuffer);  
  146.  
  147. switch($type) { 
  148.  
  149.    
  150.    
  151.    
  152. case 1: $image = imagegif($imgbuffer, $file, 80); break;  
  153.  
  154. case  
  155.  
  156. 2: $image = imagejpeg($imgbuffer, $file, 80); break;  
  157.  
  158. case 3: $image = imagepng($imgbuffer, $file, 7); break;  
  159.  
  160.  
  161.  
  162. }  
  163.  
  164. }  
  165.  
  166. }  
  167.  
  168.  
  169. if(  
  170.  
  171. preg_match('#[\x00-\x1F\x7F-\x9F/\\\\]#', $name_file) )  
  172.  
  173. {  
  174.  
  175. exit("Nom de fichier non valide");  
  176.  
  177. }  
  178.  
  179. else if( !move_uploaded_file  
  180.  
  181. ($tmp_file, $content_dir . $name_file) )  
  182.  
  183. {  
  184.  
  185. exit("Impossible de copier le fichier dans$content_dir");  
  186.  
  187. }  
  188.  
  189. redimensionner  
  190.  
  191. ($content_dir.$name_file,171, 107);  
  192.  
  193. }  
  194. ?>
  195.  
  196. <!----------------------------------- -------------------------------------------> 
jacque99
jacque99
Déconnecté
jacque
Bonjour Moogli,
ton bout de code marche toujours pas
moogli
moogli
Déconnecté
Il en faut peu pour être heureux !!!!!
effectivement il y avait des erreurs
- du a l'heure tardive sur une { manquante et un nom de variable foireux

j'en ai profiter pour corriger la retaille d'image qui ne devait pas bien fonctionner non plus ...

le tout cuit c'est par ici (le tout a mettre dans le même fichier ou modifie le paramètre manquant).

@+
jacque99
jacque99
Déconnecté
jacque
Le php devient vraiment facile avec Moogli.
Je recois toujours un message d'erreur "ouch y a une boulette : "
page 1 page 2
Répondre
Accès rapide :

Remonter Remonter
L'éditeur javascript - CSS - Gentoo - Tutoriaux PHP - Tutoriels PHP - Bretagne - php - Moto - Kit graphique