Précédent   Forum des professionnels en informatique > PHP > Langage > Fichiers
Fichiers Forum d'entraide sur les fichiers avec PHP. Avant de poster -> FAQ fichiers et Sources fichiers
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 18/11/2011, 13h27   #1
Membre actif
 
Inscription : juin 2006
Messages : 268
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 268
Points : 153
Points : 153
Par défaut Redimensionnement image OutOfMemory

Bonjour !

Je travaille actuellement sur l'upload de fichiers images, que je souhaite redimensionner. Ces images proviennent d'appareils photos, et sont assez volumineuse.
Comme j'ai pu le constater souvent dans mes recherches, j'obtiens le message "Fatal error: Out of memory (allocated 60030976) (tried to allocate 18432 bytes) in ..." lors d'un appel à la fonction "imagecreatefromjpeg($fich)".

J'ai cherché sur internet comme résoudre ce problème, mais aucune des solutions trouvées ne fonctionnent (le site est sur un serveur mutualisé, donc ini_set ne donne rien).
Je suis tombé sur le post Redimensionnement d'une image, où il est question de redimensionner lors de l'upload (Classe d'Upload et Redimensionnement). Peut être que je m'y prend mal, mais j'obtiens la même erreur.

Ma question est donc : Comment peut on redimensionner l'image, sans avoir un Out of memory ?
Le seul moyen est-il de dire au visiteur de ne pas dépasser une certaine taille ? (sachant que toutes les solutions testées fonctionnaient avec des images plus petites).

Merci d'avance !
__________________
Pensez au tag quand votre problème est réglé !
JohnNC est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/11/2011, 13h43   #2
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 991
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 991
Points : 5 031
Points : 5 031
Citation:
Ma question est donc : Comment peut on redimensionner l'image, sans avoir un Out of memory ?
Si l'image est trop grande et que tu ne peux pas la redimentionner faute d'espace mémoire et que tu n'as pas le contrôle là dessus tu ne peux rien y faire malheureusment à moins de passer par un service externe...

Citation:
Le seul moyen est-il de dire au visiteur de ne pas dépasser une certaine taille ? (sachant que toutes les solutions testées fonctionnaient avec des images plus petites).
Oui, je pense que ce serait pas mal de forcer une taille maximum. Tu peux par exemple définir un poid max.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/11/2011, 14h17   #3
Membre actif
 
Inscription : juin 2006
Messages : 268
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 268
Points : 153
Points : 153
De passer par un service externe ? C'est à la portée de développeurs novice ?

Bon sinon, je n'ai plus qu'à lui faire un léger programme pour redimensionner ses images avant qu'il ne les upload, ce sera le plus simple :/

Merci pour ta réponse !

P.S : En laissant "mon" code pour les images de taille acceptable, comment puis-je "catcher" le outOfMemory pour éviter qu'il bloque le chargement de la page ?
__________________
Pensez au tag quand votre problème est réglé !
JohnNC est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/11/2011, 16h50   #4
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 991
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 991
Points : 5 031
Points : 5 031
Citation:
P.S : En laissant "mon" code pour les images de taille acceptable, comment puis-je "catcher" le outOfMemory pour éviter qu'il bloque le chargement de la page ?
Je pense pas que tu puisse, c'est une FATAL_ERROR qui est émise dans ce cas et non pas une CATCHABLE_FATAL_ERROR.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2011, 10h35   #5
Membre actif
 
Inscription : juin 2006
Messages : 268
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 268
Points : 153
Points : 153
D'accord, merci bien !
Du coup j'ai déplacé les fonctions en fin de fichier, comme ça le reste du formulaire est affiché, et le message apparait en bas de page, même si aucun traitement n'est effectué.
__________________
Pensez au tag quand votre problème est réglé !
JohnNC 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 14h04.


 
 
 
 
Partenaires

Hébergement Web