Bonjour,
J'espere trouver de l'aide à mon probleme je suis bloqué depuis un bon moment et malgré de nombreuses recherches je ne trouve pas comment faire...
J'utilise le framwork Codeigniter et la librairies imagine pour creer des miniatures d'images a la volée dans mon site.
Le probleme est que mon code de creation de miniature bug si je poste une image haute resolution ... (exemple 3000x4000).
Comment faire pour resoudre ce probleme, d'ou vient cette limitation ?
Voici la class de ma librairies image qui effectue le cropping a la volée :
Image.php :around
class Image{
static function crop($image,$width,$height)
{
$info = pathinfo($image);
//Je creer mes miniatures dans un dossier min
$folder = $info['dirname'].'/min/';
if(!is_dir($folder))
{
mkdir($folder,0777);
}
//Je rajoute les parametres au nom de mon image
$dest = $folder.$info['filename']."_$width"."x$height.".$info['extension'];
if(file_exists($dest))
{
//return base_url($dest.'?'.rand());
return base_url($dest);
}
require_once (APPPATH."libraries/imagine.phar");
$imagine = new Imagine\Gd\Imagine();
$size = new Imagine\Image\Box($width,$height);
$options = array(
'quality' => 100,
);
$imagine->open($image)->thumbnail($size,'outbound')->save($dest,$options);
return base_url($dest);
}
}
Dans une page html comment je l'appelle :
<img src="<?php echo Image::crop($r->image,340,200).'?'.rand();?>" alt="image">
Lorsqu'une image est trop grande ( je ne saurais dire a partir de quelle taille d'ailleurs) mon script plante carrement, la miniature n'existe pas et du coup toute ma page est stoppé a partir de l'erreur de la miniature ... ce qui est assez pénible.
Maintenant dans "/bin/php/votre_version_de_php/, ouvrez le fichier php.ini
Dans ce fichier trouver la ligne contenant "memory_limit =" vers la ligne 417 pour moi.
Redémarrer Mamp et vérifier si l'erreur apparait toujours
Bonjour,
Es-tu sur que cela viens de ton script ?
As-tu regarder du côter des logs pour savoir s'il y avait quelque chose ?
Salut,
Je rejoins @Carouge10, regarde tes logs d'erreurs.
De plus, j'ai une petite remarque : si tu as 10 images sur ta page et que tu appelles ta classe pour chacune d'elle, en fonction de la taille de tes images ça va faire une sacré charge pour ton serveur ! C'est dynamique ou tu as possibilité d'enregistrer les dites images déjà croppées ?
Bonjour merci pour vos réponses,
@Carouge10 excuse ma question, je suis encore débutant ou puis-je voir ces fameux logs ? Oui je pense aussi que ca doit venir du temps d'execution mais comment faire ?
@betaWeb Oui dans mon script les images sont crees dans un dossier min si elles n'existent pas sinon elles sont recuperées
Danc le dossier de Mamp, tu vas avoir dedans un dossier "logs" avec des fichiers.
Regarde dans "php_error"
Merci ;)
Ca m'affiche ceci :
[19-Oct-2017 20:43:44 Europe/Berlin] PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 48000001 bytes) in phar:///Applications/MAMP/htdocs/app/armee_project/application/libraries/imagine.phar/Gd/Image.php on line 2
Mon memory_limit est de 128M
EDIT : Ah ba nickel je l'ai passé a 256M et ca à l'air de fonctionner ;)
Super merci @Carouge10 j'ai appris un truc ce soir :)