Je rencontre un pb étrange sur un script plus ou moins maison de redimensionnement d'images.

Il y a 70 photos issues d'appareil photos numériques, au format .JPG, et de dimensions 1024x6xx px dans un dossier.

Je lance mon script pour en faire des thumbnails... Et au bout d'une dizaine (des fois 12, des fois 9 ...) d'images, pour, il s'arrête sans prévenir.. Pas une fois il a fait la totale... Any idea ?

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
<?
Echo 'Generateur de thumbnails v.1.91.<br><br><br>';
 
// Chemin de départ
$dir_base = "../photos/";
 
// Ouverture du dossier
$opendir = opendir($dir_base);
 
// Chemin de destination
$dir_dst = "../photos/thumbs/";
 
// Qualite de l'image finale
$qual = "100";
 
while ($f = readdir($opendir)) {
	// si le fichier existe
	if(is_file($dir_base.$f)) {
	// ------------------------------------
	$ExtfichierOK = '" jpg JPG jpeg JPEG png PNG gif GIF"'; // (l espace avant jpg est important)
	// extension du fichier
	$xplode = explode('.',$f);
	$extension = $xplode[sizeof($xplode)-1]; // dernier element
	$extension = strtolower($extension); // on met en minuscule 
	// ------------------------------------
	// si l extension correspond, on continue
	if (strpos($ExtfichierOK,$extension) != '') {
	// ------------------------------------
	// creation de la ressource-image de l image source
	switch ($extension) {
	case "jpg":
	case "JPG":
	case "jpeg":
	case "JPEG":
	   $img_src = imagecreatefromjpeg($dir_base.$f);
	   break;
	case "png":
	case "PNG":
	   $img_src = imagecreatefrompng($dir_base.$f);
	   break;
	case "gif":
	case "GIF":
	   $img_src = imagecreatefromgif($dir_base.$f);
	   break;
	 // On peut également ouvrir les formats wbmp, xbm et xpm
	 // (vérifier la configuration du serveur)
	} // fin switch
	// ------------------------------------
 
	// dimensions de l image source
	// Exemple avec imagesx() et imagesy()
	$img_src_width = imagesx( $img_src );
	$img_src_height = imagesy( $img_src );
	echo 'Largeur originale : '.$img_src_width.' px<br>';
	echo 'Hauteur originale : '.$img_src_height.' px<br>';
	// ------------------------------------
 
	// on veut une image de destination
	// de 640 pixels de large sur 480 de haut MAXI
	$img_src_width_max = 640;
	$img_src_height_max = 480;
	echo 'Largeur max. souhaitee : '.$img_src_width_max.' px<br>';
	echo 'Hauteur max. souhaitee : '.$img_src_height_max.' px<br>';
 
	// Nom du fichier de destination
	$img_dst_name = 'thb-'.$f;
	// $img_dst_name = 'thb-'.strtolower($f);
	echo 'Travail de l image : <a href="'.$dir_base.$f.'" target="_blank">'.$dir_base.$f.'</a><br>';
	echo 'Nom du fichier a creer : '.$img_dst_name.'<br>';
	// ------------------------------------
 
	// si l image source est plus grande : on redimensionne
	if ($img_src_width>$img_dst_width || $img_src_height>$img_dst_height) {
	// calcul de la taille de l image de destination
	$ratiox = $img_src_width / $img_src_width_max; // ratio en largeur
	$ratioy = $img_src_height / $img_src_height_max; // ratio en hauteur
	$ratio = max($ratiox,$ratioy); // le plus grand
	echo 'Ratio largeur : '.$ratiox.'<br>';
	echo 'Ratio hauteur : '.$ratioy.'<br>';
	echo 'Ratio selectionne : '.$ratio.'<br>';
	// dimensions de l image dest
	$img_dst_width = $img_src_width/$ratio;
	$img_dst_height = $img_src_height/$ratio;
	echo 'Nouvelle largeur : '.$img_dst_width.' px<br>';
	echo 'Nouvelle hauteur : '.$img_dst_height.' px<br>';
	// ------------------------------------
 
	echo 'Qualite de la nouvelle image : '.$qual.'%<br>'; 
 
	// Affichage de confirmation d'écriture
	echo 'Nouvelle image : <a href="'.$dir_dst.$img_dst_name.'" target="_blank">'.$dir_dst.$img_dst_name.'</a>...&nbsp;';
 
	// Creation d une ressource-image de l image de destination
	// (noire par defaut)
	$img_dst_resource = imagecreatetruecolor($img_dst_width, $img_dst_height);
	// ------------------------------------
 
	// REDIMENSIONNEMENT (copie, redimensionne, re-echantillonne)
	ImageCopyResampled($img_dst_resource, $img_src, 0, 0, 0, 0, $img_dst_width, $img_dst_height, $img_src_width, $img_src_height);
	// ------------------------------------
 
	// ENREGISTREMENT (en fonction de l extension) avec qualite a 85%
	 switch ($extension) { 
	 case 'jpg':
	 case 'JPG':
	 case 'jpeg':
	 case 'JPEG':
		imagejpeg ($img_dst_resource, $dir_dst.$img_dst_name, $qual);
	   break;
	 case 'png':
	 case 'PNG':
		imagepng ($img_dst_resource, $dir_dst.$img_dst_name, $qual);
	   break;
	 case 'gif':
	 case 'GIF':
		imagegif ($img_dst_resource, $dir_dst.$img_dst_name, $qual);
	   break;
	 } // fin switch
?>
<img src="../check.png" /><br /><br />
<?
   } // fin si l image source est plus grande
  } // fin si l extension correspond
 } // fin si le fichier existe
} // fin while
// Fermeture du dossier
closedir($opendir);
 
echo '<br>Vos thumbnails sont disponibles dans le dossier '.$dir_dst.'<br>Merci de m avoir utilise... ;-)<br><br>';
?>
Snif...