Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > Images > GD
GD Forum d'entraide pour l'extension GD permettant de manipuler des images en PHP. Avant de poster -> tutoriels GD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/09/2006, 12h52   #1
Nouveau Membre du Club
 
Inscription : février 2005
Messages : 69
Détails du profil
Informations personnelles :
Âge : 30

Informations forums :
Inscription : février 2005
Messages : 69
Points : 27
Points : 27
Par défaut Redimensionnement auto

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

Code :
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);				
}
Et le fichier qui appelle la méthode pour redimensionner les images.
Code :
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/');
				}	
			}
		}
denn est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/09/2006, 14h29   #2
Membre chevronné
 
Avatar de Hervé Saladin
 
Développeur Web
Inscription : décembre 2004
Messages : 636
Détails du profil
Informations personnelles :
Âge : 30

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : décembre 2004
Messages : 636
Points : 689
Points : 689
Est-tu sur que ton hébergeur a installé les eventuelles extensions PHP dont tu aurais besoin ?
__________________
Ne cliquez pas sur ce lien
Hervé Saladin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/09/2006, 14h37   #3
Nouveau Membre du Club
 
Inscription : février 2005
Messages : 69
Détails du profil
Informations personnelles :
Âge : 30

Informations forums :
Inscription : février 2005
Messages : 69
Points : 27
Points : 27
oui puisque le script passe et dans le phpinfo() la librairie Gd est installée.

j'ai les droits sur tous les dossiers aussi.

En fait, toute la procédure passe 3 à 4 fois puis ça plante...
denn est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/09/2006, 14h45   #4
Membre chevronné
 
Avatar de kankrelune
 
Inscription : décembre 2005
Messages : 766
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 766
Points : 745
Points : 745
Personnellement je ne vois pas ce qui pourrait provoquer une erreur 500... le problème doit venir d'une autre portion de code... .. .

@ tchaOo°
kankrelune est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/09/2006, 14h49   #5
Membre chevronné
 
Avatar de Hervé Saladin
 
Développeur Web
Inscription : décembre 2004
Messages : 636
Détails du profil
Informations personnelles :
Âge : 30

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : décembre 2004
Messages : 636
Points : 689
Points : 689
mmmh, peut être un problème de saturation de la mémoire ou de la bd, voir une histoire de boucle infinie ....
c'est difficile à dire, j'ai peur de ne pas pouvoir t'être d'un grand secours.
__________________
Ne cliquez pas sur ce lien
Hervé Saladin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/09/2006, 15h10   #6
Nouveau Membre du Club
 
Inscription : février 2005
Messages : 69
Détails du profil
Informations personnelles :
Âge : 30

Informations forums :
Inscription : février 2005
Messages : 69
Points : 27
Points : 27
j'ai essayé sans accès à la base de données ça plante encore par contre

si je mets

Code :
imagecopyresampled($dst_img,$src_img,0,0,0,0,$dimension[0],$dimension[1],$info[0],$info[1]);
en commentaire ça passe. je vois pas pourquoi cette fonction pause problème et tout marche en local
denn est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/09/2006, 15h46   #7
Nouveau Membre du Club
 
Inscription : février 2005
Messages : 69
Détails du profil
Informations personnelles :
Âge : 30

Informations forums :
Inscription : février 2005
Messages : 69
Points : 27
Points : 27
donc je viens de tester sur ovh le script marche... reste plus qu'a contacter 1and1 ça doit venir de la configuratin d'apache je suppose. Merci pour les réponses
denn est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h52.


 
 
 
 
Partenaires

Hébergement Web