Canal Alpha/ Transparence

GimliDotnet Messages postés 4 Date d'inscription jeudi 15 mars 2007 Statut Membre Dernière intervention 11 mai 2007 - 9 mai 2007 à 10:12
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 - 14 mai 2007 à 10:29
Bonjour,

je cherche à détecter dans une image son canal alpha. Sachant que je ne connais pas l'image. Si elle possede un canal alpha, je voudrai connaitre la fonction Api (si il en existe une ) ou un algorithme en VB.net me permettant de l'inverser. La plupart des images sont dans un format assez simple (png,...).

Merci d'avance.

7 réponses

NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
9 mai 2007 à 13:00
Bonjour

Tu charge ton image dans un Bitmap puis avec GetPixel (il me semble), tu récupère une structure Color qui contienr les 4 caneaux : RGBA.

Il est plus facile de batiser quelqu'un que de le convertir.(surtout en programmation)
VB (6, .NET1&2), C++, C#.Net1
Mon site
0
GimliDotnet Messages postés 4 Date d'inscription jeudi 15 mars 2007 Statut Membre Dernière intervention 11 mai 2007
9 mai 2007 à 17:02
Bonjour,

Merci NHenry
il est vrai qu'avec getPixel j'obtiens une structure Color mais je ne vois comment a partir de la, modifier ma transparence. Je pensai aussi à ne pas devoir passer par chaque pixel de l'image car je change en fait que le canal de transparence en lui donnant 1 ou 0 pour toute l'image. J'utilise cela pour les TGA. Ce format là ne fait pas de fondu son canal alpha est 0 ou 1.

Merci.
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
10 mai 2007 à 13:00
Bonjour

Si j'ai bien compri ton problème, tu cherche à rendre toute l'image transparente ou non ?

Si c'est le cas, utilise la property Visible des objets de l'interface.

Sinon pour changer le canal alpha d'un pixel :
Bmp : Image bitmap chargée

dim lColor as color=Bmp.GetPixel(x,y)
Bmp.SetPixel(x,y,color.FromArgb(lColor.r,lColor.g,lColor.b, "Valeur du canal alpha"))

Il est plus facile de batiser quelqu'un que de le convertir.(surtout en programmation)
VB (6, .NET1&2), C++, C#.Net1
Mon site
0
GimliDotnet Messages postés 4 Date d'inscription jeudi 15 mars 2007 Statut Membre Dernière intervention 11 mai 2007
10 mai 2007 à 17:49
Bonjour,

encore merci de m'aider.
Mais je ne cherche pas à rendre l'image entierement transparente. Je cherche juste à changer son fond. Je voudrai aussi récupérer la valeur de la transparence de l'image. Et en fonction de cette valeur je l'inverse. Si j'ai une transparence de 0 je la change en 1( ou en 255) et inversément.
Je comprends pas trop aussi j'ai tester le GetPixel mais il me change carrément toutes les couleurs de mon image????.
Le probleme se fait surtout sur les TGA et les png.

Merci

L'homme n'est pas fait pour travailler. La preuve cela le fatigue !!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
11 mai 2007 à 11:51
Bonjour

Si j'ai bien compris : Tu cherche à rendre la couleur de transparence visible et l'image invisible?

Si c'est cela, en reprenant le code précédent :
Bmp : Image bitmap chargée

dim lColor as color=Bmp.GetPixel(x,y)
Bmp.SetPixel(x,y,color.FromArgb(lColor.r,lColor.g,lColor.b, cint(iif(lColor.a<>255,255,0))))

Il est plus facile de batiser quelqu'un que de le convertir.(surtout en programmation)
VB (6, .NET1&2), C++, C#.Net1
Mon site
0
GimliDotnet Messages postés 4 Date d'inscription jeudi 15 mars 2007 Statut Membre Dernière intervention 11 mai 2007
11 mai 2007 à 18:02
Bonjour,

oui, c'est presque cela. Sauf que je veux que mon image soit toujours visible. Mais que juste la couche transparente soit inversée. J'en était arrivé la moi aussi. Mais le but n'est pas là. Je veux bien inversé la couche mais avoir l'image toujours visible.

Merci.
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
14 mai 2007 à 10:29
Bonjour

En clair : Afficher toute l'image et mettre en visible ce qui était transparent ?

Bmp : Image bitmap chargée

dim lColor as color=Bmp.GetPixel(x,y)
Bmp.SetPixel(x,y,color.FromArgb(lColor.r,lColor.g,lColor.b,255))

Il est plus facile de batiser quelqu'un que de le convertir.(surtout en programmation)
VB (6, .NET1&2), C++, C#.Net1
Mon site
0
Rejoignez-nous