salut,
Quelqu'un sait comment activer exif sous MAMP ?
merci
Dans les extensions php peut être ?
extension=php_mbstring.dll
extension=php_exif.dll
Je crois finalement que sur mamp c'est activé par default car en testant var_dump j'ai un retour. Le problème c'est que le meme script ne fonctionne pas sous Mamp alors que c'est ok sous windows. Il s'agit de la class img de Grafick :
static function creerMin($img,$chemin,$nom,$mlargeur=100,$mhauteur=100){
// On supprime l'extension du nom
$nom = substr($nom,0,-4);
// On récupère les dimensions de l'image
$dimension=getimagesize($img);
// On cré une image à partir du fichier récup
if(substr(strtolower($img),-4)==".jpg"){$image = imagecreatefromjpeg($img); }
else if(substr(strtolower($img),-4)==".png"){$image = imagecreatefrompng($img); }
else if(substr(strtolower($img),-4)==".gif"){$image = imagecreatefromgif($img); }
// L'image ne peut etre redimensionne
else{return false; }
// Création des miniatures
// On cré une image vide de la largeur et hauteur voulue
$miniature =imagecreatetruecolor ($mlargeur,$mhauteur);
// On va gérer la position et le redimensionnement de la grande image
if($dimension[0]>($mlargeur/$mhauteur)*$dimension[1] ){ $dimY=$mhauteur; $dimX=$mhauteur*$dimension[0]/$dimension[1]; $decalX=-($dimX-$mlargeur)/2; $decalY=0;}
if($dimension[0]<($mlargeur/$mhauteur)*$dimension[1]){ $dimX=$mlargeur; $dimY=$mlargeur*$dimension[1]/$dimension[0]; $decalY=-($dimY-$mhauteur)/2; $decalX=0;}
if($dimension[0]==($mlargeur/$mhauteur)*$dimension[1]){ $dimX=$mlargeur; $dimY=$mhauteur; $decalX=0; $decalY=0;}
// on modifie l'image crée en y plaçant la grande image redimensionné et décalée
imagecopyresampled($miniature,$image,$decalX,$decalY,0,0,$dimX,$dimY,$dimension[0],$dimension[1]);
// On sauvegarde le tout
imagejpeg($miniature,$chemin."/".$nom.".jpg",90);
return true;
}
C'est un problème de mémoire me dit mes LOGS que ne pense jamais à regarder !!!!!
Je viens d'augmenter la mémoire Merory_limit = 512M
mais toujours l'erreur suivante
Allowed memory size of 33554432 bytes exhausted (tried to allocate 9792 bytes) qui vient de la ligne 7 au fait donc :
imagecreatefromjpeg($img)
C'est un problème de "memory leak", augmenter la mémoire me solutionnera pas le probleme de base, et peut au final etre un peu risqué si le bug demande vraiment trop de mémoire a un moment.
Ce genre de souci peut être causé par un array trop long, par exemple en retour d'une requête SQL (ce qui ne semble pas etre ton cas toutefois). C'est toujours plus ou moins chiant a débugger ce genre de truc, et tu vas probablement devoir te tapper quelques recherche google ... j'aimerai etre plus utile mais ... essaye d'isoler la variable qui pose probleme, déja, en faisant des die() et des var_dump() a droite / a gauche ...
Bon courage !
Ok j'ai trouvé la solution sur d'autre forum :
Il suffit de définir cette fonction dans le script php :
ini_set('memory_limit', '-1');
Désolé si je suis passé hors-sujet à la suite de ma première question ( que je n'aurais pas eu à poser si j'avais fais un var_dump aussitôt )
Merci Pewel
C'est une solution (tu ne mets plus de limite), mais comme je le disais c'est risqué si tu as un problème plus important qui réquisitionne toute ta mémoire.
Est-ce que quelqu'un aurait la facilité de traduire les 3 derniers if de la fonction plus haut ? Car tout ces calculs, ca me dépasse !!
Ca compare le ratio hauteur / largeur de l'image que tu donnes avec le ratio des variables $mhauteur et $mlargeur.
Si les ratios sont les memes (dernier if) il n'y a pas d'ajustement, sinon il ajuste en cropant les bouts en trop (il centre l'image, donc s'il y a 20 pixels de trop dans la largeur (premier if), tu perds 10 pixels de chaque coté)
Merci Vallyan pour cette précieuse explication, mais pour en revenir à 'Memory', pourquoi je n'ai pas de ce problème sous WAMP, c'est ca que je pige pas.