Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > Images > Imagick
Imagick Forum d'entraide pour l'extension Imagick permettant de manipuler des images en PHP (port de l'API ImageMagick).
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 27/01/2007, 03h26   #1
Membre émérite
 
Inscription : juin 2002
Messages : 1 013
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 1 013
Points : 959
Points : 959
Par défaut [ImageMagick] imagecreatetruecolor memory size

il m'arrive de créer des images de très grandes dimensions (4000 * 10000)
cela fonctionne très bien chez moi en local, mais pas chez mon hébergeur qui me limite à 128M de mémoire (je ne puis trop le blâmer, c'est déjà pas mal pour un mutualisé) et je reçois donc le message Fatal error: Allowed memory size of 134217728 bytes etc

je souhaite intercepter cette erreur

j'ai essayé avec set_error_handler avec le code suivant, mais cela n'a pas fonctionné (sans-doute est-ce une erreur non gérée comme il y en a beaucoup)
Code :
1
2
3
4
5
6
7
8
9
function beeld_dim($level, $string, $file, $line, $context)
	{
	echo 'il y a des erreurs';
	die;
	}
...
set_error_handler ('beeld_dim');
$beeld = imagecreatetruecolor(15000, 8000);
restore_error_handler();
quelqu'un sait-il comment calculer la mémoire utilisée en fonction de la dimension de l'image ?

merci d'avance
francis m est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/02/2007, 01h39   #2
Membre émérite
 
Inscription : juin 2002
Messages : 1 013
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 1 013
Points : 959
Points : 959
Je n'ai pas reçu beaucoup de réponses...

Mais en essayant et cherchant j'ai trouvé quelque chose, je le note ici pour ceux que cela intéresse :

Une image dont la couleur est codée en 24 bits (jpg par exemple) l'est donc en 3 bytes. Chaque pixel de l'image doit contenir ces 3 bytes (octet).

Donc, la taille théorique d'une image devrait être de largeur * hauteur * 3. En réalité, il y a un peu plus, car d'autres informations (que je ne connais pas, tel que le type de l'image) y sont stockées.

Une page php utilise certainement d'autres ressources mémoire (ne me demandez pas lesquelles je n'y connais rien) et j'ai constaté en faisant des essais chez mon hébergeur mutualisé que multiplier cette taille par un facteur de 1.6 paraît faire l'affaire.

Je crois que connaître le vrai facteur est un jeu de trial and error, et je suppose que plus l'hébergeur dispose de capacité, moins ce facteur doit être élevé.
francis m 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 20h30.


 
 
 
 
Partenaires

Hébergement Web