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] garder la transparence d'un png 24


Sujet :

Bibliothèques et frameworks PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 187
    Par défaut [GD] garder la transparence d'un png 24
    Bonjour,

    voila j'ai fais une admin qui permet d'enregisrer des images
    pb quand j'enregistre mes png 24 car j'ai besoin que ces images gardent leur transparence car elle viennent en superposition d'autre (ce sont des etiquettes genre 'promo')

    bref apres etre passer par le redimentionnement de l'image le fond devient noir???

    si vous avez une solution?
    merci

    voici mon code
    oui il traite mon image "normale" et sa "vignette"

    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
    61
    62
    63
    64
    65
    66
    67
     
    <?php
    //-------------------------------------------
    // redimentionnement et compression de l'image
    //-------------------------------------------
     
    if ($extension_upload == 'jpeg' OR $extension_upload == 'jpg' OR $extension_upload == 'JPG' ) //si mon image source est un jpeg
    {
    	$source = imagecreatefromjpeg($dossierNormales.'/'.$nomDossier.'.'.$extension_upload); // on créer un jpeg a partir de l'image indiqué 
    }
    elseif ($extension_upload == 'png') //sinon si mon image source est un png
    {
    	$source = imagecreatefrompng($dossierNormales.'/'.$nomDossier.'.'.$extension_upload); // on créer un png a partir de l'image indiqué 
    }
    elseif ($extension_upload == 'gif') //sinon si mon image source est un gif
    {
    	$source = imagecreatefromgif($dossierNormales.'/'.$nomDossier.'.'.$extension_upload); // on créer un gif a partir de l'image indiqué 
    }
    // Les fonctions imagesx et imagesy renvoient la largeur et la hauteur d'une image
    $largeur_source = imagesx($source);	//me renvoi la largeur de l'image source
    $hauteur_source = imagesy($source);	//me renvoi la hauteur de l'image source
     
    // ------------ Redimentionnement de l'image Normales et vignettes ------------
    // Si la hauteur ou la longueur de mon image est superieur a par ex : 850px, je la redimentionne
    if ($largeur_source != 70 OR $hauteur_source != 70)
    {
    	$largeurNormales_new = 200; //j'indique la largeur a la quelle je veux redimentionner ma nouvelle image
    	$hauteurNormales_new = 200; //j'indique la largeur a la quelle je veux redimentionner ma nouvelle image
    	$largeurVignettes_new = 70; //j'indique la largeur a la quelle je veux redimentionner ma nouvelle image
    	$hauteurVignettes_new = 70; //j'indique la largeur a la quelle je veux redimentionner ma nouvelle image
    }
    else	// sinon je la laisse tel quelle (je ne la redimentionne pas)
    {
    	$largeurNormales_new = $largeur_source; 
    	$hauteurNormales_new = $hauteur_source;
    	$largeurVignettes_new = 70; //j'indique la largeur a la quelle je veux redimentionner ma nouvelle image
    	$hauteurVignettes_new = 70; //j'indique la largeur a la quelle je veux redimentionner ma nouvelle image
    }
    // --- Fin redimentionnement de l'image Normales et vignettes ---
     
    $destinationNormales = imagecreatetruecolor($largeurNormales_new, $hauteurNormales_new); // On crée la miniature vide avec imagecreatetruecolor() qui gère des millier de couleur contrairement a imagecreate() qui gere que 256 couleurs
    $destinationVignettes = imagecreatetruecolor($largeurVignettes_new, $hauteurVignettes_new); // On crée la miniature vide avec imagecreatetruecolor() qui gère des millier de couleur contrairement a imagecreate() qui gere que 256 couleurs
     
    // On créer la miniature grace la fonction imagecopyresampled() qui permet de redimentionner des images
    imagecopyresampled($destinationNormales, $source, 0, 0, 0, 0, $largeurNormales_new, $hauteurNormales_new, $largeur_source, $hauteur_source);
    imagecopyresampled($destinationVignettes, $source, 0, 0, 0, 0, $largeurVignettes_new, $hauteurVignettes_new, $largeur_source, $hauteur_source);
     
    // On enregistre la miniature grace la fonction imagejpeg() crée un fichier JPEG depuis l'image fournie. 
    if ($extension_upload == 'jpeg' OR $extension_upload == 'jpg' OR $extension_upload == 'JPG' ) //si mon image source est un jpeg
    {
    	imagejpeg($destinationNormales, $dossierNormales.'/'.$nomDossier.'.'.$extension_upload, 85); //imagejpeg  ( resource $image  [, string $filename  [, int $quality (qualité de compression du jpeg, 100 etant la meilleur qualité)  ]] )
    	imagejpeg($destinationVignettes, $dossierVignettes.'/'.$nomDossier.'.'.$extension_upload, 85); //imagejpeg  ( resource $image  [, string $filename  [, int $quality (qualité de compression du jpeg, 100 etant la meilleur qualité)  ]] )
    	echo '<br />L\'envoi de l\'image1 à bien été effectué !';
    }
    elseif ($extension_upload == 'png') //sinon si mon image source est un png
    {
    	imagepng($destinationNormales, $dossierNormales.'/'.$nomDossier.'.'.$extension_upload, 8); //imagepng  ( resource $image  [, string $filename  [, int $quality (qualité de compression du png, de 0 (aucune compression) à 9 )  ]] )
    	imagepng($destinationVignettes, $dossierVignettes.'/'.$nomDossier.'.'.$extension_upload, 8); //imagepng  ( resource $image  [, string $filename  [, int $quality (qualité de compression du png, de 0 (aucune compression) à 9 )  ]] )
    	echo '<br />L\'envoi de l\'image1 à bien été effectué !';
    }
    elseif ($extension_upload == 'gif') //sinon si mon image source est un gif
    {
    	imagegif($destinationNormales, $dossierNormales.'/'.$idDossier.'.'.$extension_upload); //imagegif  ( resource $image  [, string $filename ] )
    	imagegif($destinationVignettes, $dossierVignettes.'/'.$idDossier.'.'.$extension_upload); //imagegif  ( resource $image  [, string $filename ] )
    	echo '<br />L\'envoi de l\'image1 à bien été effectué !';
    }
    ?>

  2. #2
    Membre Expert
    Avatar de Seb33300
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    1 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Thaïlande

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 564
    Par défaut
    Simplifie toi la vie en utilisant cette classe :
    http://www.verot.net/php_class_upload.htm

    ça devrait également résoudre ton problème de transparence

  3. #3
    Membre Expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

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

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Billets dans le blog
    1
    Par défaut
    salut,

    déjà, le béa ba:
    • seuls png et gif parmi les formats que tu utilises supporte la transparence...
    • un regard à gd grace à google et ohhh miracle:lis ça (c'est dingue ce que la doc officielle contient quand on la lit non?)
    • un conseil, coté serveur n'enregistre que du png:
      • ça permet la transparence
      • ça facilite l'écriture des accès aux fichiers (toujours .png)
      • c'est le format qui permet le plus de truc avec gd...

    question sécurité, tu n'en a pas vraiment dans ce que tu fais là... il ne faut jamis croire à l'extension...
    utilise getimagesize pour récupérer les infos de taille et mimes de l'image... si elle échoue alors c'est pas une image...

Discussions similaires

  1. [TCPDF - FPDI] Transparence sur un PNG
    Par RapotOR dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 01/07/2009, 17h56
  2. Transparence des images PNG sous Internet Explorer
    Par Torpedox dans le forum Webdesign & Ergonomie
    Réponses: 12
    Dernier message: 14/10/2008, 23h41
  3. Problème de transparence GIF et PNG avec Export et SaveAs
    Par nl5nn dans le forum VBA PowerPoint
    Réponses: 2
    Dernier message: 04/03/2008, 21h31
  4. Garder la transparence lorsque les fenêtres sont maximisées
    Par pepito62 dans le forum Windows Vista
    Réponses: 5
    Dernier message: 10/07/2007, 09h40
  5. [ImageMagick] Transparence alpha image png
    Par ShadoX dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 12/06/2006, 18h32

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