Problème de redimensionnement d'images pour images de haute qualité (GD /imageco

Signaler
Messages postés
15
Date d'inscription
vendredi 7 janvier 2005
Statut
Membre
Dernière intervention
6 janvier 2006
-
Messages postés
15
Date d'inscription
vendredi 7 janvier 2005
Statut
Membre
Dernière intervention
6 janvier 2006
-
Bonjour,

pour le projet sur lequel je bosse, je dois miniaturiser des images et les fusionner avec un fond. Tout marche très bien en local mais mis sur le net, j'ai des problèmes sur (je suppose) certaines fonctions de GD.

Lors de la miniaturisation, certaines images, apparemment en trop haute définition, ne se miniaturisent pas et laissent la place à une vignette noire, un peu comme si on avait fait un imagecreatetruecolor() et qu'on l'avait directement affiché... J'ai tout de suite pensé qu'il s'agissait d'un problème avec ma fonction imagecopyresampled(), donc j'ai essayé d'intervertir avec imagecopyresized() mais ça ne marche toujours pas.

Ce qui est bizarre, c'est que ça marche très bien en local, pour toutes les photos, et en ligne ça marche avec toutes les photos qui ne dépassent pas une résolution donnée... ce qui est embêtant puisque mon projet vise essentiellement des images de haute qualité...

enfin si quelqu'un pouvait m'aider, ce serait très charitable, parce que google ne m'a été d'aucune utilité...

le code de ma fonction de miniaturisation :

/////////////////////////////////////////////////////

function Redim($percent)
{

// Calcul des nouvelles dimensions
list($width, $height) = getimagesize($this->nom);

$newwidth = $width * $percent;
$newheight = $height * $percent;

// chargement => nécessite GD2
$thumb = imagecreatetruecolor($newwidth, $newheight);

switch (strtolower($this->format)){

case ".jpg":
$source = imagecreatefromjpeg($this->nom);
break;

case ".jpeg":
$source = imagecreatefromjpeg($this->nom);
break;

case ".png":
$source = imagecreatefrompng($this->nom);
break;

case ".gif":
$source = imagecreatefromgif($this->nom);
break;

default: echo "votre image n'a pas un format compatible";
}//switch

// Redimensionnement
imagecopyresampled($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);

// Enregistrement Miniature
imagejpeg($thumb, $this->dirMini.'/'.basename($this->nom));

}//Redim()

9 réponses

Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
25
Hello,

ce ne serait pas plutôt un problème de timeout ? Les images sont trop grosses, trop lourdes, ça prend donc bcp de temps pour les miniaturiser. En ligne, tu arrives au timeout parce que c'est tjrs plus lent qu'en local.
Messages postés
15
Date d'inscription
vendredi 7 janvier 2005
Statut
Membre
Dernière intervention
6 janvier 2006

pas pensé...

et on peut pas changer ce timeout ?
Messages postés
15
Date d'inscription
vendredi 7 janvier 2005
Statut
Membre
Dernière intervention
6 janvier 2006

et puis je pense pas, vu que l'upload des images Hdef marche nickel... c'est la miniaturisation qui pose problème
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
25
Ca n'a aucun rapport.
L'upload ne donne jamais de timeout.
La miniaturisation, tu travailles sur ton image, tu as des algo complexes qui se mettent en route.

On peut changer ce timeout si on a la main sur le serveur...ou si l'hébergeur l'autorise (peu de chance...).
Déjà, essaye en local avec une image TRES lourde... plusieurs 100aines de mo. Tu verras si cela fait la même chose.

http://fr.php.net/manual/fr/function.set-time-limit.php
et max_execution_time dans php.ini.
Messages postés
15
Date d'inscription
vendredi 7 janvier 2005
Statut
Membre
Dernière intervention
6 janvier 2006

je vais jeter un oeil à ça...

merci en tout cas ! c'est sympa
Messages postés
15
Date d'inscription
vendredi 7 janvier 2005
Statut
Membre
Dernière intervention
6 janvier 2006

j'ai essayé de caler un set_time_limit avant ma fonction, rien n'y fait...
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
25
Je t'ai dit qu'il y avait peu de chance si tu n'avais pas la main sur le serveur.
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
25
Au fait, getimagesize() te renvoie un tableau très intéressant, en cas d'image valide. Dans ce tableau, tu trouves notamment le VRAI format de ton image (jpeg, gif...). Toujours plus efficace que de se baser sur l'extension... ;-)

As-tu testé sur de grosses, très grosses images en local, pas forcément en 300dpi, juste très grande et volumineuse. En mettant ton max_execution_time dans ton php.ini à un petit temps, genre 10. Voir si tu as la même réaction et les mêmes symptômes surtout.
Messages postés
15
Date d'inscription
vendredi 7 janvier 2005
Statut
Membre
Dernière intervention
6 janvier 2006

j'ai pas vraiment le temps en fait. Je pars dans une 1h30 pour tout présenter, et je suis absolument pas près. Je pense que je vais faire ma démo sur mon pc à distance... vu que ça marche