Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 4 sur 4
  1. #1
    Nouveau Membre du Club
    Étudiant
    Inscrit en
    novembre 2005
    Messages
    30
    Détails du profil
    Informations personnelles :
    Âge : 28

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : novembre 2005
    Messages : 30
    Points : 33
    Points
    33

    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 Expert 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 191
    Points
    1 191

    Par défaut

    IE ne prend pas en compte la transparence des PNG.
    Mais il existe des solutions ...

  3. #3
    Nouveau Membre du Club
    Étudiant
    Inscrit en
    novembre 2005
    Messages
    30
    Détails du profil
    Informations personnelles :
    Âge : 28

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : novembre 2005
    Messages : 30
    Points : 33
    Points
    33

    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 :
    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
    Invité de passage
    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.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •