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] Upload d'image avec redimensionnement


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre du Club Avatar de snyfir
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 246
    Points : 56
    Points
    56
    Par défaut [GD] Upload d'image avec redimensionnement
    Bonjour, voici le script que j'utilise pour uploader mes 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
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
     
        private function createImage()
        {
            if ($this->fileImage == NULL OR $this->fileImage['error'] != 0) {
                $this->error = "il a une erreur ou le fichier n'est pas envoyé";
                return false;
            }
     
            if ($this->fileImage['size'] >= 2097152) {
                $this->error = "fichier tro gros";
                return false;
            }
     
            // Testons si l'extension est autorisée
            $infosfichier = pathinfo($this->fileImage['name']);
            $extension_upload = $infosfichier['extension'];
            $extension_upload = strtolower($extension_upload); //converti en minuscule
            $extensions_autorisees = array('png', 'jpg', 'jpeg', 'gif');
            if (!in_array($extension_upload, $extensions_autorisees)) {
                $this->error = "l'extension n'est pas autorisé";
                return false;
            }
     
            $TailleImageChoisie = getimagesize($this->fileImage['tmp_name']);
            $NouvelleLargeur = 32; //Largeur choisie à 32px
            $NouvelleHauteur = 32;
     
            switch ($extension_upload) {
                case jpg:
                    $ImageChoisie = imagecreatefromjpeg($this->fileImage['tmp_name']);
                break;
                case png:
                    $ImageChoisie = imagecreatefrompng($this->fileImage['tmp_name']);
                break;
                case gif:
                    $ImageChoisie = imagecreatefromgif($this->fileImage['tmp_name']);
                break;
            }
            $NouvelleImage = imagecreatetruecolor($NouvelleLargeur , $NouvelleHauteur) or die ("Erreur");
     
            imagecopyresampled($NouvelleImage , $ImageChoisie  , 0,0, 0,0, $NouvelleLargeur, $NouvelleHauteur, $TailleImageChoisie[0],$TailleImageChoisie[1]);
            imagedestroy($ImageChoisie);
            $NomImageChoisie = explode('.', $ImageNews);
            $NomImageExploitable = time();
     
            switch ($extension_upload) {
                case jpg:
                    imagejpeg($NouvelleImage , 'imagesnews/'.$NomImageExploitable.'.jpg', 100);
                break;
                case png:
                    imagepng($NouvelleImage , 'imagesnews/'.$NomImageExploitable.'.png');
                break;
                case gif:
                    imagegif($NouvelleImage , 'imagesnews/'.$NomImageExploitable.'.gif', 100);
                break;
            }
            $LienImageNews = 'imagesnews/'.$NomImageExploitable.'.'.$ExtensionPresumee;
     
            return true;
        }
    Il marche bien. Le seul problème est que le fond des images transparentes se transforme en noire, comment faire pour qu'il soit blanc, ou alors qu'il reste transparent.

    Merci d'avance

  2. #2
    Membre actif Avatar de chtipitou
    Profil pro
    Étudiant
    Inscrit en
    Mars 2006
    Messages
    175
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2006
    Messages : 175
    Points : 214
    Points
    214
    Par défaut
    La transparence pour les png, pour les gif je ne sais pas et pour les jpg, aux dernieres nouvelle, cet encodage ne le supporte pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $imgPng = imageCreateFromPng($strImagePath);
    imageAlphaBlending($imgPng, true);
    imageSaveAlpha($imgPng, true);
    42
    there is no place like 127.0.0.1
    Mangez des http://www.smarty.net avec vos PHP web s'il vous plait
    var_dump retourne les informations structurées d'une variable, y compris son type et sa valeur. Les tableaux et les objets sont explorés récursivement, avec des indentations, pour mettre en valeur leur structure.

  3. #3
    Membre du Club Avatar de snyfir
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 246
    Points : 56
    Points
    56
    Par défaut
    Citation Envoyé par chtipitou Voir le message
    La transparence pour les png, pour les gif je ne sais pas et pour les jpg, aux dernieres nouvelle, cet encodage ne le supporte pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $imgPng = imageCreateFromPng($strImagePath);
    imageAlphaBlending($imgPng, true);
    imageSaveAlpha($imgPng, true);
    J'ai rajouté les deux lignes suivantes, mais sa ne change rien.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    imageAlphaBlending($imgPng, true);
    imageSaveAlpha($imgPng, true);

  4. #4
    Membre du Club Avatar de snyfir
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 246
    Points : 56
    Points
    56
    Par défaut
    Comment je doit faire pour que le fond des images transparentes des images png soit blanc ?.

  5. #5
    Membre du Club Avatar de snyfir
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 246
    Points : 56
    Points
    56
    Par défaut
    Quand je remplace imagecreatetruecolor par imagecreate sa marche.
    Est-ce gênant d'utiliser imagecreate. Car on dit qu'il faut utiliser plutôt utiliser imagecreatetruecolor que imagecreate. Mais pourquoi ?

  6. #6
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    En effet, il vaut utiliser imagecreatetruecolor.
    Selon moi, c'est plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    imageAlphaBlending($imgPng, false);
    imageSaveAlpha($imgPng, true);
    Si mes souvenirs sont bons, il faut dessiner le fond transparent avec imagefilledrectangle...
    http://www.developpez.net/forums/sho...d.php?t=204078
    De retour parmis vous après 10 ans!!

  7. #7
    Membre du Club Avatar de snyfir
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 246
    Points : 56
    Points
    56
    Par défaut
    Citation Envoyé par Sub0 Voir le message
    En effet, il vaut utiliser imagecreatetruecolor.
    Si mes souvenirs sont bons, il faut dessiner le fond transparent avec imagefilledrectangle...
    Pourquoi, qu'es que sa change de imagecreate ?
    imagecreatetruecolor crée une image avec un fond noir.
    Comment utiliser imagecreatetruecolor de sorte à avoir une image avec un fond blanc ?

  8. #8
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Déjà, selon moi, c'est plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    imageAlphaBlending($imgPng, false);
    imageSaveAlpha($imgPng, true);
    La fonction imagecreatetruecolor permet de préparer une image aux couleurs vraies (32bits). Elle est indispensable au format PNG mais surtout JPEG. Mais elle ne fonctionne pas avec le format GIF qui utilise une palette de 256 couleurs.

    Le format JPEG ne supporte pas la transparence. Il n'y a que le format GIF et PNG.
    De retour parmis vous après 10 ans!!

  9. #9
    Membre du Club Avatar de snyfir
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 246
    Points : 56
    Points
    56
    Par défaut
    Citation Envoyé par Sub0 Voir le message
    Déjà, selon moi, c'est plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    imageAlphaBlending($imgPng, false);
    imageSaveAlpha($imgPng, true);
    La fonction imagecreatetruecolor permet de préparer une image aux couleurs vraies (32bits). Elle est indispensable au format PNG mais surtout JPEG. Mais elle ne fonctionne pas avec le format GIF qui utilise une palette de 256 couleurs.

    Le format JPEG ne supporte pas la transparence. Il n'y a que le format GIF et PNG.
    Merci beaucoup, sa marche !

  10. #10
    Membre du Club Avatar de snyfir
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 246
    Points : 56
    Points
    56
    Par défaut
    Enfaite sa marche pour les images png, mais les images gif, le fond reste toujours noir. Ya t'il une méthode similaire ?

  11. #11
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    pour les images GIF, il s'agit d'une palette 8 bits (255 couleurs + 1 transparente).

    http://us3.php.net/imageColorTransparent
    De retour parmis vous après 10 ans!!

  12. #12
    Membre du Club Avatar de snyfir
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 246
    Points : 56
    Points
    56
    Par défaut
    Merci beaucoup

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

Discussions similaires

  1. [CKEditor] Upload d'images avec FCKeditor
    Par ludo74 dans le forum Bibliothèques & Frameworks
    Réponses: 17
    Dernier message: 04/06/2010, 16h39
  2. [MySQL] Upload d'image avec insertion du chemin dans bdd
    Par DjChat dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 29/05/2008, 10h45
  3. [Upload] Upload d'image avec PHP !
    Par King_T dans le forum Langage
    Réponses: 2
    Dernier message: 15/04/2008, 02h21
  4. [CKEditor] Upload d'image avec FCKeditor
    Par frutix dans le forum Bibliothèques & Frameworks
    Réponses: 3
    Dernier message: 01/03/2007, 19h31
  5. [Upload] uploader une image avec move_uploades_file
    Par pod1978 dans le forum Langage
    Réponses: 6
    Dernier message: 31/01/2006, 13h50

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