IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

[ImageMagick] imagecreatefromjpeg limité à des photos de 2400 pixels


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 22
    Points : 7
    Points
    7
    Par défaut [ImageMagick] imagecreatefromjpeg limité à des photos de 2400 pixels
    Bonjour,

    J'utilise un script php pour redimensionner des photos et créer des avatars. J'ai utilisé plusieurs scripts différents et malgres tout, je n'arrive pas à redimensionner des images dont la taille dépasse les 2400 pixels quelle que soit le poid.
    Après quelques test, je m'aperçoit que le script s'arrete à "imagecreatefromjpeg".

    Y'a t'il un moyen de contourner le "imagecreatefromjpeg", cela provient-il de mon hébergment (1and1) ou est-ce un autre probleme ?

    Merci de m'avoir lu.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Problème de mémoire, il faut savoir que PHP charge l'image en memoire et est limité par son memory_limit.

    tu peux utiliser ini_set('memory_limit'), pour augmenter la mémoire, si tu as accès à une telle fonction (et en général sur du mutualisé, tu n'as pas accès à de telles fonctions ).

    Tu peux trouver plus de renseignements, dans les commentaires de http://fr3.php.net/manual/fr/functio...tefromjpeg.php

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 22
    Points : 7
    Points
    7
    Par défaut
    Merci pour la réponse.

    Je viens de voir que mon memory limit est fixé à 40Mo. Cela ne suffit pas ?
    Mais ce que je ne comprends surtout pas c'est que si j'utilise la fonction ini_set('memory_limit'), ça veut dire que ça va me donner plus que 40Mo ?! Ca fait beaucoup pour une image de 3000 pixels de large !

    En tout cas merci bcp pour le lien.

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Même problème
    Bonjour,

    Je suis également chez 1&1 et cela fait bientôt une semaine que je me heurte au même problème.

    En fait, je ne formulerais pas la contrainte par 2400 pixels mais par l'équation suivante :

    (Largeur * Hauteur)/(1024²) < 2,4

    Ne me demandez pas pourquoi, je n'en sais rien mais je l'ai établi après une centaine de tests.

    1&1 bloque le ini_set ainsi que l'instruction dans le .htaccess

    Si qq a une idée pour contourner, je suis preneur ! Quand on voit des sites comme pixmania qui joue avec les images facilement, il doit y avoir moyen...

    Merci d'avance.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 22
    Points : 7
    Points
    7
    Par défaut
    Bonjour,

    J'ai recemment appelé le service technique 1and1 qui me fait bien rire puisque c'est une receptionniste qui tente, tant bien que mal, de me retranscrire les infos qu'elle va demander au vrai technicien à chacune de mes questions.
    Bref... là n'est pas le problème.

    On m'a simplement répondu que l'image d'origine + l'image redimensionnée ne devait pas dépasser les (valeur très approximatives m'ont-ils dit) 12 Millions de pixels.

    La solution dans notre cas étant de passer d'un hebergement mutualisé à un serveur dédié. Il n'y aurait aucun soucis, on pourrait toucher au memory_limit (d'ailleurs, Pixmania n'est certainement pas mutualisé =) ceci explique cela). Ce qui dans mon cas, me ferai passer de 0€ par mois (j'ai l'offre premium gratuite pendant 3 ans) à 60€ minimum par mois...

    En tout cas chapeau pour la formule ^^. Malgres tout, elle ne s'applique pas pour mon cas. J'arrive à redimenssionner des images qui font 2000 * 1500 pixels.

    Voila... Mais appel le service technique pour te marrer un coup =) Elles sont malgres tout très charmantes.

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Je me doutais bien également que le serveur dédié était la solution...

    Tant pis ! Je suis par contre étonné que tu arrives à redimensionner une image de 2000 * 1500 pixels, étant moi-même en offre premium pour 2 ans encore.

    Tu as du JPG au départ ou un autre format ? Connais tu le type d'encodage (les miennes viennent d'un appareil photo numérique, en haute qualité et je crois que c'est du 24 bits couleurs).

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 22
    Points : 7
    Points
    7
    Par défaut
    Je saurais pas vraiment te dire le type d'encodage surtout que c'est une photo que j'ai du redimensionner avec photohop... Tout ce que je peux te dire c'est qu'elle fait 2Mo.

  8. #8
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Après quelques essais
    Bonjour tout le monde.

    Je suis hébergé sur 1and1 en pack perso confort et j'ai eu le même problème.
    Je viens de faire des tests avec des tas résolutions différentes et j'en arrive aux conclusions suivantes :
    Ca marche avec des résolutions inférieures ou égales à 1605*2139 (quelque soit le poids) mais plus avec des résolutions supérieures ou égales à 1605*2140.
    En gros, il faut pas se focaliser trop sur ces chiffres mais si l'image dépasse 3433095px environ, c'est mort

    Bon courage...

  9. #9
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    J'ai eu le même problème avec la fonction imagecreatefromjpeg() et j'ai pu contourner partiellement le problème en utilisant la fonction imagejpeg() de la manière suivante :

    $im = imagecreatetruecolor($src_width, $src_height);
    $img_src = imagejpeg($im, $chemin_vers_image_a_redimensionner);

    $img_dest = imagecreatetruecolor($dest_witdh, $dest_height);

    imagecopyresampled($img_dest, $img_src, 0, 0, 0, 0, $dest_width, $dest_height, $src_width, $src_height);

    Le script s'exécute correctement jusque la 3ème instruction mais rencontre le même problème lors du imagecopyresampled(...)

  10. #10
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Pour éviter de faire planter le script à cause d'un dépassement mémoire, j'avais trouvé ce script qui à l'air de fonctionner :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    $infos = getimagesize($_FILES['photo']['tmp_name']);
    $width = $infos[0];
    $height = $infos[1];
    $bit = $infos['bits'];
    $channel = $infos['channels'];
    //en octets
    $m_used = memory_get_usage();
    //en Mo
    $mem_used = round($m_used / pow(1024,2),2).'M';			
    //calcul de mémoire utilisé pour le traitement de l'image
    $m_need = round(($width * $height * $bit * $channel / 8 + pow(2, 16)) * 1.65); 			
    //la memoire limite du server
    $m_limit = (integer) ini_get('memory_limit') * pow(1024, 2);			
    //la mémoire à allouer pour eviter la Fatal error
    $m_aloc = $m_need - $m_limit;
    $m_aloc += $m_used;//on ajoute la mémoire déjà utilisé
    //on convertit en Mo
    $memory = round($m_aloc / pow(1024,2),2);
    echo "<hr />taille: $width x $height px<br />nb de bits: $bit<br />canaux: $channel<hr /><br />";
    echo 'Memoire utilisé par le script : '.$mem_used;
    echo '<hr />Mémoire utilisée pour la redimension : '.round($m_need / pow(1024,2),2).'M ';
    echo '<hr />Mémoire possible : '.round($m_limit / pow(1024,2),2).'M<br />';
    echo "<hr />Manque de mémoire : $memory M<br />";

Discussions similaires

  1. Réponses: 0
    Dernier message: 22/04/2009, 09h15
  2. [GD] Utilisation de imagecreatefromjpeg() avec des images de plus de 2 000 pixels
    Par jojo33bx dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 11/09/2007, 19h40
  3. Limite des smtp
    Par silef dans le forum Serveurs (Apache, IIS,...)
    Réponses: 3
    Dernier message: 27/03/2005, 23h49
  4. Réponses: 8
    Dernier message: 17/02/2005, 09h05
  5. Limite des GENERATORS
    Par Débéa dans le forum Débuter
    Réponses: 5
    Dernier message: 24/07/2003, 13h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo