Bonjour,
pour retailler directement des photos mises sur le serveur ftp par le client j'ai écris le code ci-dessous. Tout ceci marche très bien en local, cependant en ligne (avec l'hébergement mutualisé 1and1), l'erreur : "Erreur 500: erreur interne du serveur!Une erreur interne du serveur est survenue." apparaît et toutes mes images n'ont pas été remodifiées.
Je pensais que le temps d'execution devait être trop long mais vu les paramètres de phpinfo() ça ne devrait pas poser de problèmes.
J'ai essayé aussi de mettre imagecopyresized à la place de imagecopyresampled, dans ce cas il me modifie plus d'images mais pas toutes encore et j'ai encore l'erreur 500....
Information phpinfo() du serveur :
max_execution_time : 50000
max_input_time : -1
Le langage : PHP5
Base de données : Mysql.
Methode de redimensionnement des images
Et le fichier qui appelle la méthode pour redimensionner les images.
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 // Script de redimensionnement des images function controle_resize_image($rep, $nom_image, $max, $rep_vignette) { // test de la présence du fichier $info = getimagesize($rep.$nom_image); switch ($info[2]) { case 1 : $src_img = imagecreatefromgif($rep.$nom_image); break; case 2 : $src_img = imagecreatefromjpeg($rep.$nom_image); break; case 3 : $src_img = imagecreatefrompng($rep.$nom_image); break; } if($max != '') { // Dans le cas ou l'image à une taille inférieure au max if (($info[0] && $info[1]) < $max) { $ratio = 1; } elseif($info[0] or $info[1] > $max) { if($info[0] > $info[1]) { $ratio = $max/$info[0]; } else { $ratio = $max/$info[1]; } } /*$dimension[0] = $info[0]*$ratio; $dimension[1] = $info[1]*$ratio;*/ } else { $ratio = 1; } $dimension[0] = $info[0]*$ratio; $dimension[1] = $info[1]*$ratio; $dst_img = imagecreatetruecolor($dimension[0], $dimension[1]); imagecopyresampled($dst_img,$src_img,0,0,0,0,$dimension[0],$dimension[1],$info[0],$info[1]); switch ($info[2]) { case 1 : imagegif($dst_img,$rep_vignette.$nom_image,100); break; case 2 : imagejpeg($dst_img,$rep_vignette.$nom_image,100); break; case 3 : imagepng($dst_img,$rep_vignette.$nom_image,100); break; } imagedestroy($dst_img); imagedestroy($src_img); }
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 // Traitement des photos pour les produits require_once('include/controle.class.php5'); require_once('include/DB.class.php5'); $sql = new sql_connect(); $sql->sql_connect_connectDB(); $rep = '../images/photos_produits/'; $controle = new controle(); // Calcul du nombre de produits $sqlQuery = "Select artic_photo from articles"; $result = $sql->sql_connect_select($sqlQuery); foreach ($result as $key =>$value) { $photo = $value['artic_photo']; if (file_exists($rep.$photo)) { $controle->controle_resize_image($rep,$photo,100,'../images/photos_produits/images_retaillees/'); $controle->controle_resize_image($rep,$photo,160,'../images/photos_produits/images_details/'); $info = getimagesize($rep.$photo); if($info [0] > 600 || $info[1] > 600) { $controle->controle_resize_image($rep,$photo,600,'../images/photos_produits/images_agrandies/'); } else { $controle->controle_resize_image($rep,$photo,'','../images/photos_produits/images_agrandies/'); } } }
Partager