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 :

[GD] Redimensionnement d'une image et disparition d'autres


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre actif
    Inscrit en
    Février 2007
    Messages
    406
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 406
    Points : 207
    Points
    207
    Par défaut [GD] Redimensionnement d'une image et disparition d'autres
    Bonsoir,

    je galère avec la fonction de redimensionnement et spécialement imagejpeg qui refuse de me générer mes miniatures, imagejpeg unable to open, cannot write..
    Je me tourne donc vers les droits d'écriture et compagnie mais en vain.

    J'ai fais quelques test en essayant de créer un simple fichier et d'écrire dessus, --> ca fonctionne.

    J'ai écumé le net pour voir si il n'y a pas une autre alternative.. je ne trouve pas grand chose si ce n'est un redimensionnement "normal" avec js ou php, mais j'ai remarqué que la qualité de mes image n'est pas top.

    J'ai enfin trouvé une fonction qui n'enregistre pas l'image, mais la garde en mémoire et l'affiche --> ca m'arrange:

    Ma page redimage.php

    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
    Header("Content-type: image/jpeg"); 
    $image = "0-upload/metier/moi.jpg"; 
    $src_im = ImageCreateFromJpeg($image); 
    $size = GetImageSize($image); 
    $src_w = $size[0]; 
    $src_h = $size[1]; 
    //taille de votre image 
    $dst_w = 120; 
    // Contraint le rééchantillonage à une largeur fixe 
    // Maintient le ratio de l'image 
    $dst_h = round(($dst_w / $src_w) * $src_h); 
    $dst_im = ImageCreateTrueColor($dst_w,$dst_h); 
    /* ImageCopyResampled copie et rééchantillonne l'image originale*/ 
    ImageCopyResampled($dst_im,$src_im,0,0,0,0,$dst_w,$dst_h,$src_w,$src_h); 
    /* ImageJpeg génère l'image dans la sortie standard (c.à.d le navigateur). 
    Le second paramètre est optionnel ; dans ce cas, l'image est générée dans un fic 
    hier*/ 
    ImageJpeg($dst_im); 
    ImageDestroy($dst_im); 
    imageDestroy($src_im);

    Ma page accueil:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    include($_SERVER["DOCUMENT_ROOT"].'/redimage.php') ;
    et plein d'image a afficher...
    <img src='redimage.php' >
    Surprise, mon image est bien redimensionné , mais toute la page est blanche, il n y a que la miniature .

    ou sont parti mes images??

    J'ai bien vérifié phpinfo(); me sort:


    GD Support enabled
    GD Version 2.0 or higher
    FreeType Support enabled
    FreeType Linkage with freetype
    FreeType Version 2.3.9
    T1Lib Support enabled
    GIF Read Support enabled
    GIF Create Support enabled
    JPG Support enabled
    PNG Support enabled
    WBMP Support enabled

    une explication?? je vous remercie par avance.

  2. #2
    Membre éprouvé
    Avatar de Antoine_935
    Profil pro
    Développeur web/mobile
    Inscrit en
    Juillet 2006
    Messages
    883
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur web/mobile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 883
    Points : 1 066
    Points
    1 066
    Par défaut
    Salut

    Je suis loin d'être un expert en GD, mais il me semble que ton erreur est ici:
    Cette fonction (soit dit en passant, elle est en minuscules), appelée avec un seul paramètre, renvoie directement l'image sur la sortie standard (soit le navigateur).
    Citation Envoyé par ranell Voir le message
    Surprise, mon image est bien redimensionné , mais toute la page est blanche, il n y a que la miniature.
    Ça correspond donc, puisque tu inclus le fichier redimage.php qui crée et envoie la miniature.

    Enlève simplement cet include, et tout devrait bien se passer.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    include($_SERVER["DOCUMENT_ROOT"].'/redimage.php');
    Bon, après, c'est une mauvaise idée de générer la miniature à chaque fois qu'on en a besoin. Tu ferais mieux de l'enregistrer dans un fichier, avec imagejpeg par exemple.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    bool imagejpeg ( resource $image [, string $filename [, int $quality ]] )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if (imagejpeg($dst_im, 'miniature.jpg', 85) {
        echo 'OK';
    }
    else {
        echo 'KO';
    }

  3. #3
    Membre actif
    Inscrit en
    Février 2007
    Messages
    406
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 406
    Points : 207
    Points
    207
    Par défaut
    Merci bcp Antoine_935!

    c'est bien le include qui ne sert à rien!

    Mais...

    Ca fonctionne pour une même image avec <img src='redimage.php' > , je voulais en faire une fonction pour pouvoir appliquer le redimensionnement sur plusieurs image, mais avec cette syntaxe je sais pas comment faire!


    bool imagejpeg ( resource $image [, string $filename [, int $quality ]] )
    Je voudrais bien utiliser cette fonction, mais j'ai des problèmes pour la lecture/ecriture genre imagejpeg unable to open, cannot write..(je suis en société et je ne sais par quelle manipulation ils ont bloqué les droits..)

    il n'y a que ce code là qui me retourne quelque chose, alors il faut que fasse avec et en faire une fonction pour tout mes images et tant pis si ça n'enregistre pas.

    voilà j'espère être claire.

    Merci!

  4. #4
    Expert confirmé
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Points : 4 853
    Points
    4 853
    Par défaut
    c'est probablement un problème de droit ou d'erreur de chemin.
    Tu peux utiliser les fonctions is_readable et is_writable pour vérifier que tu as accès au droit en écriture/lecture sur le fichier.

  5. #5
    Membre actif
    Inscrit en
    Février 2007
    Messages
    406
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 406
    Points : 207
    Points
    207
    Par défaut
    Merci Thes32!

    Avec les deux fonctions j'ai pu vérifier que c'était pas un problème de droit , mais que ca venais du code qui passais des fois et plantais d'autre fois.

    J'ai donc pris un autre code, désolé je n'ai fait aucune constatation sur ce qui bugguais, en gros ca marche maintenant.

    Merci à tous!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. ASP : redimensionner/compresser une image
    Par laptiote dans le forum ASP
    Réponses: 6
    Dernier message: 23/07/2007, 18h46
  2. Redimensionnement d'une image en même temps que sa JFrame
    Par mandou1 dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 22/06/2007, 12h04
  3. Réponses: 2
    Dernier message: 27/11/2006, 15h16
  4. [JDesktopPane] Redimensionner d'une image
    Par GLDavid dans le forum Composants
    Réponses: 17
    Dernier message: 05/07/2006, 11h03
  5. probleme redimensionnement d'une image
    Par meteor4 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 29/11/2004, 14h58

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