Page 1 sur 1
Comment créer une image totalement transparente ?
Publié : lun. 27/oct./2014 14:21
par Lord Nelson
Salut, comment je peux créer une image totalement transparente ?
J'ai essayé ça mais l'image est noir, elle devrais être transparente

C'est à dire que une fois l'image créer et sauvé sur le disque, quand je met le curseur dessus, l'image devrais être transparente.
Mais là non pourquoi ?
Code : Tout sélectionner
CreateImage(1, 100, 100, 32, #PB_Image_Transparent)
UsePNGImageEncoder()
SaveImage(1, "Test.png", #PB_ImagePlugin_PNG, 0, 32)
Re: Comment créer une image totalement transparente ?
Publié : lun. 27/oct./2014 14:39
par majikeyric
Elle est pourtant bien transparente quand je l'ouvre en double-cliquant dessus ou avec photoshop par exemple.
Re: Comment créer une image totalement transparente ?
Publié : lun. 27/oct./2014 15:06
par Lord Nelson
C'est bon j'ai trouvé
Code : Tout sélectionner
CreateImage(1, 100, 100, 32, #PB_Image_Transparent)
StartDrawing(ImageOutput(1))
DrawingMode(#PB_2DDrawing_AlphaBlend)
For Y = 0 To 100 - 1
For X = 0 To 100 - 1
Couleur = RGBA(255, 255, 255, 1)
Plot(X, Y, Couleur)
Next
Next
StopDrawing()
UsePNGImageEncoder()
SaveImage(1, "Test.png", #PB_ImagePlugin_PNG, 0, 32)
Si tu met transparence à 0, tu verras que du noir, 255, que du blanc.
Faut mettre 1 en transparence pour avoir une transparence totale.
Re: Comment créer une image totalement transparente ?
Publié : lun. 27/oct./2014 16:13
par nico
Non, ce n'est pas bon du tout, le premier code avais un sens mais celui là n'en a aucun.
Re: Comment créer une image totalement transparente ?
Publié : lun. 27/oct./2014 16:43
par falsam
Lord Nelson a écrit :SaveImage(1, "Test.png", #PB_ImagePlugin_PNG, 0, 32)
Le 4eme paramétre (ici 0) représente la qualité de l'image de 0 à 10. 8 est un bon compromis.
Re: Comment créer une image totalement transparente ?
Publié : lun. 27/oct./2014 16:47
par falsam
Lord Nelson a écrit :Si tu met transparence à 0, tu verras que du noir, 255, que du blanc.
Faut mettre 1 en transparence pour avoir une transparence totale.
Le 4eme paramétre de la fonction RGBA() représente le canal alpha qui détermine la transparence de l'image. Ce canal varie de 0 à 255 (
Transparent à opaque). Si en mettant 0 ton image est noir ça me parait être un comportement étrange.
Re: Comment créer une image totalement transparente ?
Publié : lun. 27/oct./2014 17:00
par Mesa
et ça, ça fonctionne ?
Code : Tout sélectionner
If OpenWindow(0, 0, 0, 800, 600, "ImageGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
;SetWindowColor(0, RGB(255, 165, 0))
CreateImage(0, 200,200,32,#PB_Image_Transparent )
StartDrawing(ImageOutput(0))
DrawingMode(#PB_2DDrawing_AlphaBlend) ; A ne pas oublier ...
Box(0,0,200,200,RGBA(0,0,0,0))
StopDrawing()
ImageGadget(0, 300, 200, 200, 200, ImageID(0))
EndIf
UsePNGImageEncoder()
SaveImage(0, "c:\Test.png", #PB_ImagePlugin_PNG, 0, 32)
Delay(1000)
RunProgram("c:\Test.png")
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
M.
Re: Comment créer une image totalement transparente ?
Publié : lun. 27/oct./2014 18:24
par Lord Nelson
Heuuuu, ça vient à croire de mon explorateur qui affiche la vignette en noir mais en vrais elle est transparente car en aperçus elle est bien transparente !
Oui ça fonctionne bien.
Merci

Re: Comment créer une image totalement transparente ?
Publié : lun. 27/oct./2014 18:33
par nico
Mais ça fonctionne depuis le début.
Si en mettant 0 ton image est noir ça me parait être un comportement étrange
Non par défaut ton image est noir, c'est normal.
Re: Comment créer une image totalement transparente ?
Publié : mar. 28/oct./2014 12:03
par falsam
nico a écrit :Non par défaut ton image est noir, c'est normal.
Avec ce code, je crée bien une image avec un fond transparent en utilisant un canal alpha à 0. Puis je dessine trois cercles. L'image sera sauvegardée sur le bureau.
Code : Tout sélectionner
CreateImage(0, 512, 512, 32)
StartDrawing(ImageOutput(0))
;Fond transparent de l'image
DrawingMode(#PB_2DDrawing_AlphaChannel)
Box(0, 0, 512, 512, RGBA(0, 0, 0, 0))
;Un grand classique
DrawingMode(#PB_2DDrawing_AlphaBlend)
Circle(256, 200, 100, RGBA(255, 0, 0, 128))
Circle(200, 280, 100, RGBA(0, 255, 0, 128))
Circle(300, 280, 100, RGBA(0, 0, 255, 128))
StopDrawing()
;Sauvegarde de l'image sur le bureau
UsePNGImageEncoder()
SaveImage(0, GetHomeDirectory()+"Desktop\"+"Test.png", #PB_ImagePlugin_PNG, 8, 32)
Tu constateras que le fond est bien transparent et non noir.
Je pense qu'il y a un ̶b̶u̶g̶ oops non on va plutôt dire un comportement bizarre.
Si je ne dessine pas les cercles alors effectivement le fond est noir.
Re: Comment créer une image totalement transparente ?
Publié : mar. 28/oct./2014 13:55
par Lord Nelson
Hum étrange

Re: Comment créer une image totalement transparente ?
Publié : mar. 28/oct./2014 18:27
par nico
Tu constateras que le fond est bien transparent et non noir.
Je pense qu'il y a un ̶b̶u̶g̶ oops non on va plutôt dire un comportement bizarre.
Si je ne dessine pas les cercles alors effectivement le fond est noir.
Je me suis mal exprimé, ce que je voulais dire c'est que même avec une couche alpha à 0, il y a toujours la couche RGB existante et que celle-ci étant rempli avec des 0, cela donne évidemment du noir. Donc si tu charges l'image et que tu la dessines avec la couche alpha, elle sera transparente mais si tu la dessines sans prendre en compte la couche alpha, elle sera noire.
Donc oui l'image est transparente et si tu ne dessines pas les cercles et bien oui, l'image est toujours transparente et non noir.
Mais je tiens à te rassurer si je l'ouvre avec Paint elle est blanche, avec l'aperçu de window elle est noir, mais dans tous les cas elle est bien transparente.