salut,

Quelqu'un sait comment activer exif sous MAMP ?

merci

12 réponses


Vincerolf
Auteur
Réponse acceptée

Déjà activé sous MAMP

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

Merci Vallyan pour ton soutient

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.

Enfin 99% des gens qui ont le problème font ce que tu as fait, remarque bien ^^

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.