Bonjour, je viens de trouver ce script qui m'a permis d'arrêter de m'arracher les cheveux (je ne m'en sors plus avec les upload, les redimensionnements, les formats etc, je suis débutant).
Voici le script qui permet un upload d'une image jpg et un redimensionnement en petite taille (pour un forum par exemple)
Attention le code marche bien (je veux dire, il n'y a pas besoin de le lire en cherchant une erreur )
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
<?
if(!empty($_GET["dwn"])) {
   if(!strpos(" ".$_GET["dwn"],"..")) {
      header("content-type: application/octet-stream");
      $f = substr($_GET["dwn"],strrpos($_GET["dwn"],"/")+1);
      header("Content-Disposition: attachment; filename=".$f);
      flush();
      readfile($_GET["dwn"]);   
   }
 
} else {
 
function redimage($img_src,$img_dest,$dst_w,$dst_h) {
   // Lit les dimensions de l'image
   $size = GetImageSize($img_src);  
   $src_w = $size[0]; $src_h = $size[1];  
   // Teste les dimensions tenant dans la zone
   $test_h = round(($dst_w / $src_w) * $src_h);
   $test_w = round(($dst_h / $src_h) * $src_w);
   // Si Height final non précisé (0)
   if(!$dst_h) $dst_h = $test_h;
   // Sinon si Width final non précisé (0)
   elseif(!$dst_w) $dst_w = $test_w;
   // Sinon teste quel redimensionnement tient dans la zone
   elseif($test_h>$dst_h) $dst_w = $test_w;
   else $dst_h = $test_h;
 
   // La vignette existe ?
   $test = (file_exists($img_dest));
   // L'original a été modifié ?
   if($test)
      $test = (filemtime($img_dest)>filemtime($img_src));
   // Les dimensions de la vignette sont correctes ?
   if($test) {
      $size2 = GetImageSize($img_dest);
      $test = ($size2[0]==$dst_w);
      $test = ($size2[1]==$dst_h);
   }
 
   // Créer la vignette ?
   if(!$test) {
      // Crée une image vierge aux bonnes dimensions
      // $dst_im = ImageCreate($dst_w,$dst_h);
      $dst_im = ImageCreateTrueColor($dst_w,$dst_h); 
      // Copie dedans l'image initiale redimensionnée
      $src_im = ImageCreateFromJpeg($img_src);
      // ImageCopyResized($dst_im,$src_im,0,0,0,0,$dst_w,$dst_h,$src_w,$src_h);
      ImageCopyResampled($dst_im,$src_im,0,0,0,0,$dst_w,$dst_h,$src_w,$src_h);
      // Sauve la nouvelle image
      ImageJpeg($dst_im,$img_dest);
      // Détruis les tampons
      ImageDestroy($dst_im);  
      ImageDestroy($src_im);
   }
 
   // Affiche le descritif de la vignette
   echo "SRC='".$img_dest."?t=".time()."' WIDTH=".$dst_w." HEIGHT=".$dst_h;
}
 
// AFFICHAGE DE LA PAGE
 
?> <font size=3>Désignez une image .JPG</font> <i>(300 Ko max.)<br>
 
<? // GESTION DE L'UPLOAD
 
$rep="./"; // Répertoire de stockage (doit avoir les droits d'écriture ! CHMOD)
$f = $rep."original.jpg"; // path du fichier original
 
if(isset($_FILES['photo'])) {
   if($_FILES['photo']['size']>0) {
      if(strtolower(substr($_FILES['photo']['name'],-4))!=".jpg") { ?>
           <b>Ce n'était pas un .JPG !</b>
      <? } elseif (!move_uploaded_file($_FILES['photo']['tmp_name'], $f)) { ?>
           <b>Erreur d'enregistrement !</b>
      <? }
   } else { ?>
      <b>Trop gros fichier !</b>
   <? }
}?>
         <table><FORM METHOD="POST" ENCTYPE="multipart/form-data">
            <INPUT TYPE=HIDDEN NAME=MAX_FILE_SIZE VALUE=<? echo 300*1024;?>>
            <tr><td align=center><INPUT TYPE=FILE NAME="photo"></td></tr>
            <tr><td align=center><INPUT TYPE=SUBMIT value="Générer la vignette"></td></tr>
         </FORM></table>
 
<? // AFFICHAGE DE LA VIGNETTE ET DES INFOS
 
$f2 = $rep."vignette.jpg"; // path de la vignette
$largeur=150; if(!empty($_GET["largeur"])) $largeur = $_GET["largeur"];
$hauteur=150; if(!empty($_GET["hauteur"])) $hauteur = $_GET["hauteur"];
 
   if(file_exists($f)) { ?>
 
         <table border=0 cellspacing=5 cellpadding=0><tr>
            <td>
               <center><b>Original</b></center><br>
               Poids : <?echo round(filesize($f)/1024)?> Ko<br>
               Taille : <?
                  $size = GetImageSize($f);
                  echo $size[0]."x".$size[1]; ?><br>
               <br><center>
                  <A href="vignette.php?dwn=<?echo $f?>">Télécharger</A>
               </center>
            </td><td align=center>
               <IMG <? redimage($f,$f2,$largeur,$hauteur)?>>
            </td><td>
               <center><b>Vignette</b></center><br>
               Poids : <?echo round(filesize($f2)/1024)?> Ko<br>
               Taille : <?
                  $size = GetImageSize($f2);
                  echo $size[0]."x".$size[1]; ?><br>
               <br><center>
                  <A href="vignette.php?dwn=<?echo $f2?>">Télécharger</A>
               </center>
            </td>
         </tr><tr>
 
<? // CHOIX DES DIMENSIONS DE LA VIGNETTE
?>
            <form><td colspan=3 align=center>
               <table><tr>
                  <td>Largeur :</td>
                  <td><select name="largeur">
                     <?for($i=10;$i<=150;$i+=10) {
                        echo "<option";
                        if($i==$largeur) echo " SELECTED";
                        echo ">".$i."</option>\n";
                     } ?>
                  </select></td>
                  <td>Hauteur :</td>
                  <td><select name="hauteur">
                     <?for($i=10;$i<=150;$i+=10) {
                        echo "<option";
                        if($i==$hauteur) echo " SELECTED";
                        echo ">".$i."</option>\n";
                     } ?>
                  </select></td>
                  <td><input type=submit value=Modifier></td>
            </td></form>
         </tr></table>
 
   <? } ?>
 
      </td>
   </tr></table></center>
<?
 
} ?>
Je ne peux vous demander de tout lire et je suis désolé de vous déranger avec ça, mais j'aimerais juste savoir un détail. Ce script ne traite que les images .jpg, serait-il possible de lui faire accepter les .gif également (et assez facilement sans tout rechanger) ou bien serait-ce une autre méthode? Je vous remercie d'avance