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 :

[Image]Composition d'images PNG-24


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2005
    Messages
    30
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2005
    Messages : 30
    Points : 34
    Points
    34
    Par défaut [Image]Composition d'images PNG-24
    Bonjour à tous,


    Voila je cherche à créer une image png à partir d'autres images png 24 bits (avec un canal alpha)

    - Donc je commence par créer mon image principale avec imagecreatetruecolor()...

    - Puis je charge mes images avec imagefrompng(..)

    - Je compose mon image avec des imagecopymerge(...)
    - Enfin, je rend le tout imagepng()

    Jusque la ça va, le problème, c'est que le résultat final n'est pas celui attendu

    Cad que apparement les copymerge ne tiennent pas compte du canal alpha, du coup, ce qui devait etre transparent est remplacé par du blanc bref, tout est opaque

    J'ai cherché et j'ai essayé d'ajouter des imagesavealpha() et des imagealphablending un peu de partout mais c toujours pareil.
    (ps: le imagesavealpha fonctionne uniquement quand je fait un rendu d'un seul png)

    Donc est-ce que cette chose est possible à faire? est-ce que j'utilise les bonnes fonctions? est-ce qu'il fo faire le traitement pixel par pixel pour chaque image pour gerer la transparence?

    Sinon ben j'ai plus qu'a faire pareil avec des gifs mais le rendu sera moins bien

    Merci pour vos réponses et joyeux Noel!

  2. #2
    Membre expérimenté
    Avatar de Linaa
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    987
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 987
    Points : 1 309
    Points
    1 309
    Par défaut
    IE ne prend pas en compte la transparence des PNG.
    Mais il existe des solutions ...

  3. #3
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2005
    Messages
    30
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2005
    Messages : 30
    Points : 34
    Points
    34
    Par défaut
    YEEEEAAAAAAH!!!!!
    J'ai trouvé

    Merci pour ta réponse Linaa, je m'en servirais pour faire un cas particulier pour IE

    Bon pour ceux que ça interessent, voici un petit code rapide pour fusionner des images PNG encodées en 24bits, (donc avec un canal alpha):

    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
     
    <?php
      // On va renvoyer une image PNG
      header('Content-Type: image/png');
     
      // Création de l'image (vierge)
      $rendu = imagecreatetruecolor($largeur, $hauteur);
     
      // Par défaut le fond de l'image est noir, on va la remplir d'une couleur
      // Ici du bleu clair
      $fond = imagecolorallocatealpha($rendu,  0, 128, 255, 0);
     
      imagefill($rendu, 0, 0, $fond);
     
      // On active l'alphablending
      imagealphablending($rendu, true);
     
      // On charge le ou les image(s) png
      $image1 = imagecreatefrompng("nom de l'image");
      $image2 = ...
     
      // Fusion des images sur l'image finale
      imagecopy($rendu, $image1, positionX, positionY, largeur_image, hauteur_image);
      imagecopy(......);
     
      // On déactive l'alphablending
      imagealphablending($rendu, false);
     
      // Sauvegarde des données alpha
      imagesavealpha($rendu, true);
     
      // Enfin, on rend l'image
      imagepng($rendu);
    ?>
    C'est tout bête, il faut juste connaitre la gymnastique d'activation de l'alphablending


    A++

  4. #4
    Nouveau Candidat au Club
    Inscrit en
    Novembre 2006
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    je fais ressortir un cadavre LOL

    Oui mais le probléme, c'est qu'en utilisant des imagecopymerge à la place des imagecopy, PHP ne tient plus compte du canal alpha ... je cherche desespérément comment arranger ça mais ... pas facile

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

Discussions similaires

  1. [Débutant] Manipulation d'images : intégrer une image dans une image
    Par noscollections dans le forum VB.NET
    Réponses: 2
    Dernier message: 17/10/2014, 11h51
  2. Composition d'images en tenant compte de l'angle
    Par ParadoxEd dans le forum Traitement d'images
    Réponses: 0
    Dernier message: 05/05/2014, 20h08
  3. [Image] Décomposer une image png.
    Par Quintoff dans le forum 2D
    Réponses: 3
    Dernier message: 06/01/2006, 20h22
  4. [Java 2D] problème de composition d'images
    Par wwave dans le forum 2D
    Réponses: 4
    Dernier message: 11/07/2005, 12h28
  5. [Image]Decouper une image
    Par Elmilouse dans le forum 2D
    Réponses: 4
    Dernier message: 09/12/2004, 21h47

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