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

Langage PHP Discussion :

Optimisation script de redimension d'images


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 9
    Par défaut Optimisation script de redimension d'images
    Bonjour à tous,

    Je suis en train de faire un script pour que mes membres puissent uploader des images lourdes

    Voici ce script, ou plutôt la partie concernée, qui resize les images:
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    switch ($extension_fichier) {
     
             case 'jpg':  // si l'extension est un jpg
             case 'jpeg': // ou un jpeg
     
    		// on récupère le fichier temporaire pour le redimensionner
    $fichier_redim = $fichier_temporaire;
     
    		// puis on récupère la taille
    list($width, $height) = getimagesize($fichier_redim);
     
     
     
    		// si la hauteur de base est plus petite ou égale à $hauteur alors générer l'image avec ses dimensions d'origine
    if ($height <= $hauteur){ 
    $y = $height;
    $x = $width;
     
    		// sinon définir une hauteur max de $hauteur en conservant les proportions
    } else {
    $y = $hauteur; 
    $x = (int) (($width*$y)/$height);
     
    }
     
     
    $taille_fichier_redim = getimagesize($fichier_redim);
     
    if ($taille_fichier_redim) {
     
    		// On ouvre l'image d'origine
    $img_big = imagecreatefromjpeg($fichier_redim);
    $img_new = imagecreate($x, $y);
    		// génère la miniature
    $img_mini = imagecreatetruecolor($x, $y)
    or $img_mini = imagecreate($x, $y);
     
    		// copie de l'image finale
    imagecopyresized($img_mini,$img_big,0,0,0,0,$x,$y,$taille_fichier_redim[0],$taille_fichier_redim[1]);
    imagejpeg($img_mini,$fichier_redim );
     
    }
        break;
    Je suis conscient que ce n'est pas très propre mais je ne suis pas professionnel

    Le script fonctionne mais quand j'essaye d'uploader un fichier d'un peu plus de 2mo j'ai une erreur qui dit que je dépasse la mémoire allouée (39mo)

    J'ai des soupçons sur le double "getimagesize" ?

    C'est intégré à un script d'upload, il me semble que c'est plus sécurisé ainsi ?

    Qu'en pensez vous ?

    Edit:
    Voici l'erreur, somme toute assez basique
    Fatal error: Allowed memory size of 39845888 bytes exhausted (tried to allocate 13824 bytes) in /home/users5/b/brunomichel/www/boutique_import/oscuploadify.php on line 72
    J'imagine que si il y a deux uploads simultanés c'est une catastrophe ?

    Bien cordialement
    Bonne soirée

  2. #2
    Membre Expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Par défaut
    Bonjour,

    modifie les directives memory_limit et max_upload_size de ton PHP.ini

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 51
    Par défaut
    Mieux vaux les modifier avec ini_set au sein de ce script uniquement plutôt qu'au php.ini.

    Parce que bonjour¨le flinguage des performances du serveur en appliquant 40M de mémoire PHP à chaque thread ...

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 9
    Par défaut
    Bonjour et merci beaucoup pour vos réponses.

    Hum, je suis sur du mutualisé, donc je doute que mon hébergeur me prête plus de Ram mais merci, si je passe en dédié j'aurai en tête les paramètres.

    Vous ne voyez aucun moyen d'optimiser la bestiole ?

    En fait, la solution c'est de limiter la taille de l'image a uploader pour demander moins de ressource au serveur ?

    Bonne journée

    Edit: il n'y aurai pas un imagedestroy(); a mettre quelquepart pour libérer la mémoire ? Rien a voir ?

  5. #5
    Membre Expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Par défaut
    Hmm..

    En fait ton erreur est étonnante car d'après le message tu as une mémoire allouable de 39845888 et l'erreur se produit alors que tu n'alloues que 13824.

    Allowed memory size of 39845888 bytes exhausted (tried to allocate 13824 bytes)
    Tu peux rajouter un imagedestroy de $img_mini oui.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 9
    Par défaut
    C'est peut être les 13824 bytes de trop ??
    C'est vrai que c'est étrange ...

Discussions similaires

  1. script de redimension d'image
    Par remy65600 dans le forum Langage
    Réponses: 2
    Dernier message: 03/06/2009, 11h37
  2. [GD] Script de redimension d'image
    Par lyoan dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 07/03/2007, 11h27
  3. [GD] Redimension d'image - plusieurs erreurs dans mon script
    Par Henry9 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 18/02/2007, 10h58
  4. Lancement script pour pivoter des images
    Par steph_raynaud dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 27/04/2006, 13h18
  5. 1 script, pour animer une image, qui en regroupe 3 scripts
    Par vampyer972 dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 09/04/2006, 00h06

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