Bonjour tous le monde voila j'ai réussi à faire un script qui upload des photos 4 au total via un formulaire et qui crée des miniatures dans un dossier diffèrent que le dossier où sont uploadé les photos. mon problème c'est que les miniatures sont redimensionnés et ne prennent pas beaucoup de place coté serveur mais les photos sont uploadé tels quels sans redimensionnement.
puisque ce sont des photos prises avec une grande résolution, d'une part elles prennent beaucoup d'espace coté serveur et d'autre part lors de l'affichage avec un clik sur la miniature pour l'afficher avec lightbox elle est tellement grande qu'elle s'affiche sur toute la page et on peut pas voir la photo sans scroller.
je voudrais que le code upload les photos et fasse un double redimensionnement c'est à dire crée d'abord la miniature qu'elle stock dans photo/small (ce qui est déjà fait) mais également redimensionne la photo original qu'elle stock dans le dossier photo.
j’espère que j'ai été clair dans mes explications merci d'avance

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
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
//var_dump($_FILES['photo_1']); /*décommenter pour voir le contenu*/
$countFiles=count($_FILES['photo_1']['name']);/* pour obtenir le nombre de fichier téléchargés */
foreach($_FILES['photo_1'] as $key => $value) /* parcours le tableau des fichiers */
{
        for($Indice=0;$Indice<$countFiles;$Indice++) /* pour chaque fichier */
        {
             $Fichiers[$Indice][$key]=$_FILES['photo_1'][$key][$Indice]; /* construit un tableau avec les informations */
        }
}
//var_dump($Fichiers); /*décommenter pour voir le contenu*/
for($Indice=0;$Indice<$countFiles;$Indice++) /* pour chaque fichier */
{
        $Fichier=$Fichiers[$Indice];
        if($Fichier['error']==0) /* si il n'y a pas d'erreur */
        {
 
$pic=($Fichier['name']);
$LePic[$Indice]=$pic;
$dossier = 'photos/'; 
$fichier = basename($Fichier['name']); 
$taille_maxi = 5000000; 
$taille = $Fichier['size']; 
$extensions = array('.png', '.gif', '.jpg', '.jpeg', '.JPG'); 
$extension = strrchr($Fichier['name'], '.'); 
//Début des vérifications de sécurité... 
if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau 
{ 
$erreur = 'Vous devez uploader un fichier de type png, gif, jpg, jpeg, txt ou doc...'; 
} 
if($taille>$taille_maxi) 
{ 
$erreur = 'Le fichier est trop gros...'; 
} 
if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload 
{ 
 
$LeFichier[$Indice] = $fichier;
 
// Création d'une image minature  - Redimensionner l'image
	$taille_image = getimagesize($Fichier['tmp_name']); // getimagesize, récupère la hauteur et la largeur d'une image, sous forme de tableau
	$image_choisie =  imagecreatefromjpeg($Fichier['tmp_name']); // Call_user_fun récupere l'identifiant de l'image, imagecreateform sauvegarde une copie
	$nouvelle_largeur = 176; // Nouvelle largeur de mon image
 
	$reduction = ( ($nouvelle_largeur * 100) / $taille_image[0] ); // Calule la ratio qui correspond au quotient de l'ancienne largeur par la nouvelle. C'est un %tage, on multiplie donc par 100
	$nouvelle_hauteur = ($taille_image[1] * $reduction/100 ); // // Calule la nouvelle hauteur en application la ratio à l'ancienne hauteur. On oublie pas de diviser par 100 sinon notre dimension, reste en %
 
//Création de la miniature
	$nouvelle_image = imagecreatetruecolor($nouvelle_largeur , $nouvelle_hauteur); // C
	imagecopyresampled($nouvelle_image, $image_choisie, 0 , 0 , 0 , 0 , $nouvelle_largeur, $nouvelle_hauteur, $taille_image['0'], $taille_image['1']);
 
	imagejpeg($nouvelle_image, 'photos/small/' . $fichier , 176);
    imagejpeg($image_choisie , 'photos/' . $fichier  , 176);
	imagedestroy($nouvelle_image); // Supprimer notre image de sauvegarde
 	imagedestroy($image_choisie); // Supprimer notre image de sauvegarde
 
if(move_uploaded_file($Fichier['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné... 
{ 
echo '<br/><br/>photo ajouté avec succès !'; 
} 
else //Sinon (la fonction renvoie FALSE). 
{ 
echo '<br/><br/>Echec de l\'upload !'; 
} 
} 
else 
{ 
echo $erreur; 
} 
} /* ne pas oublier de fermer le if */
} /* ne pas oublier de fermer le for */
// si un champ est vide, on affiche le message d'erreur
if (strlen($message) > strlen($msg_erreur)) {
 
  echo $message;
 
// sinon c'est ok 
} else {
 
  foreach($_POST as $index => $valeur) {
    $$index = mysql_real_escape_string(trim($valeur));
  }
 
 /* $sql = "INSERT INTO annonce VALUES ('', '".$type_bien."', '".$type_ope."', 
    '".$ville."', '".$quartier."', '".$surface."', '".$nombre_chambre."',
    '".$prix."', '".$pic."', '".$fichier."')";*/
 $sql = "INSERT INTO annonce VALUES ('', '".$type_bien."', '".$type_ope."', 
                '".$ville."', '".$quartier."', '".$surface."', '".$nombre_chambre."',
                '".$prix."', 
                '".$LePic[0]."', '".$LeFichier[0]."', 
                '".$LePic[1]."', '".$LeFichier[1]."', 
                '".$LePic[2]."', '".$LeFichier[2]."', 
                '".$LePic[3]."', '".$LeFichier[3]."')";
 
 
  $res = mysql_query($sql);
 
  if ($res) {
    echo $msg_ok;
  } else {
    echo mysql_error();
  }
 
}
 
//var_dump($_FILES['photo_1']); /*décommenter pour voir le contenu*/
$countFiles=count($_FILES['photo_1']['name']);/* pour obtenir le nombre de fichier téléchargés */
foreach($_FILES['photo_1'] as $key => $value) /* parcours le tableau des fichiers */
{
        for($Indice=0;$Indice<$countFiles;$Indice++) /* pour chaque fichier */
        {
             $Fichiers[$Indice][$key]=$_FILES['photo_1'][$key][$Indice]; /* construit un tableau avec les informations */
        }
}
//var_dump($Fichiers); /*décommenter pour voir le contenu*/
for($Indice=0;$Indice<$countFiles;$Indice++) /* pour chaque fichier */
{
        $Fichier=$Fichiers[$Indice];
        if($Fichier['error']==0) /* si il n'y a pas d'erreur */
        {
 
$pic=($Fichier['name']);
$LePic[$Indice]=$pic;
$dossier = 'photos/'; 
$fichier = basename($Fichier['name']); 
$taille_maxi = 5000000; 
$taille = $Fichier['size']; 
$extensions = array('.png', '.gif', '.jpg', '.jpeg', '.JPG'); 
$extension = strrchr($Fichier['name'], '.'); 
//Début des vérifications de sécurité... 
if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau 
{ 
$erreur = 'Vous devez uploader un fichier de type png, gif, jpg, jpeg, txt ou doc...'; 
} 
if($taille>$taille_maxi) 
{ 
$erreur = 'Le fichier est trop gros...'; 
} 
if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload 
{ 
 
$LeFichier[$Indice] = $fichier;
 
// Création d'une image minature  - Redimensionner l'image
	$taille_image = getimagesize($Fichier['tmp_name']); // getimagesize, récupère la hauteur et la largeur d'une image, sous forme de tableau
	$image_choisie =  imagecreatefromjpeg($Fichier['tmp_name']); // Call_user_fun récupere l'identifiant de l'image, imagecreateform sauvegarde une copie
	$nouvelle_largeur = 176; // Nouvelle largeur de mon image
 
	$reduction = ( ($nouvelle_largeur * 100) / $taille_image[0] ); // Calule la ratio qui correspond au quotient de l'ancienne largeur par la nouvelle. C'est un %tage, on multiplie donc par 100
	$nouvelle_hauteur = ($taille_image[1] * $reduction/100 ); // // Calule la nouvelle hauteur en application la ratio à l'ancienne hauteur. On oublie pas de diviser par 100 sinon notre dimension, reste en %
 
//Création de la miniature
	$nouvelle_image = imagecreatetruecolor($nouvelle_largeur , $nouvelle_hauteur); // C
	imagecopyresampled($nouvelle_image, $image_choisie, 0 , 0 , 0 , 0 , $nouvelle_largeur, $nouvelle_hauteur, $taille_image['0'], $taille_image['1']);
 
	imagejpeg($nouvelle_image, 'photos/small/' . $fichier , 176);
    imagejpeg($image_choisie , 'photos/' . $fichier  , 176);
	imagedestroy($nouvelle_image); // Supprimer notre image de sauvegarde
 	imagedestroy($image_choisie); // Supprimer notre image de sauvegarde
 
if(move_uploaded_file($Fichier['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné... 
{ 
echo '<br/><br/>photo ajouté avec succès !'; 
} 
else //Sinon (la fonction renvoie FALSE). 
{ 
echo '<br/><br/>Echec de l\'upload !'; 
} 
} 
else 
{ 
echo $erreur; 
} 
} /* ne pas oublier de fermer le if */
} /* ne pas oublier de fermer le for */
// si un champ est vide, on affiche le message d'erreur
if (strlen($message) > strlen($msg_erreur)) {
 
  echo $message;
 
// sinon c'est ok 
} else {
 
  foreach($_POST as $index => $valeur) {
    $$index = mysql_real_escape_string(trim($valeur));
  }
 
 /* $sql = "INSERT INTO annonce VALUES ('', '".$type_bien."', '".$type_ope."', 
    '".$ville."', '".$quartier."', '".$surface."', '".$nombre_chambre."',
    '".$prix."', '".$pic."', '".$fichier."')";*/
 $sql = "INSERT INTO annonce VALUES ('', '".$type_bien."', '".$type_ope."', 
                '".$ville."', '".$quartier."', '".$surface."', '".$nombre_chambre."',
                '".$prix."', 
                '".$LePic[0]."', '".$LeFichier[0]."', 
                '".$LePic[1]."', '".$LeFichier[1]."', 
                '".$LePic[2]."', '".$LeFichier[2]."', 
                '".$LePic[3]."', '".$LeFichier[3]."')";
 
 
  $res = mysql_query($sql);
 
  if ($res) {
    echo $msg_ok;
  } else {
    echo mysql_error();
  }
 
}