Précédent   Forum du club des développeurs et IT Pro > PHP > Bibliothèques et frameworks
Bibliothèques et frameworks Forum d'entraide sur les frameworks, templates, bibliothèques de code (PDFLib, eZPdf, JpGraph, Artichow, PEAR, etc). Avant de poster : FAQ bibliothèques, toutes les FAQ PHP et cours bibliothèques
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 24/12/2005, 17h26   #1
NikoGJ
Nouveau Membre du Club
 
Étudiant
Inscription : novembre 2005
Messages : 30
Détails du profil
Informations personnelles :
Âge : 27

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : novembre 2005
Messages : 30
Points : 33
Points : 33
Envoyer un message via MSN à NikoGJ
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!
NikoGJ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/12/2005, 12h38   #2
Linaa
Membre Expert
 
Avatar de Linaa
 
Inscription : avril 2005
Messages : 988
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : avril 2005
Messages : 988
Points : 1 192
Points : 1 192
IE ne prend pas en compte la transparence des PNG.
Mais il existe des solutions ...
Linaa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/12/2005, 02h38   #3
NikoGJ
Nouveau Membre du Club
 
Étudiant
Inscription : novembre 2005
Messages : 30
Détails du profil
Informations personnelles :
Âge : 27

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : novembre 2005
Messages : 30
Points : 33
Points : 33
Envoyer un message via MSN à NikoGJ
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++
NikoGJ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2006, 21h05   #4
Killua54
Invité de passage
 
Inscription : novembre 2006
Messages : 1
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 1
Points : 1
Points : 1
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
Killua54 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 00h26.


 
 
 
 
Partenaires

Hébergement Web