Page 1 sur 1

[OK]Problème Valeur Alpha avec point() plot()

Publié : ven. 08/juil./2022 12:08
par Ar-S
Salut,
Je m'amuse encore avec les pixel et leurs couleurs.
Je ne pige pas pourquoi la valeur de ma couche Alpha est 0
Elle devrait être de 255 logiquement.

Ce que je veux faire :
1 - Chargement image JPG ou PNG
2 - Encodage en 32bits pour gérer la couche alpha
3 - Point() N pixels et connaître leur valeur Alpha (A) du RGBA() pointé
4 - Plot() ces pixels avec une valeur RGBA(r,g,b,NN) (NN étant le ascii de la lettre souhaitée)

Lien de l'image teste : https://upimg.ldvmultimedia.com/img/vi.jpg

Code réduit au "Point()"

Code : Tout sélectionner

UsePNGImageDecoder()
UseJPEGImageDecoder()
UsePNGImageEncoder()

Structure Car
    min.c
    maj.c
EndStructure

Global NewList mot.car()
Global Fichier$
Global LONG
Global COUL.q

Word$ = "Test"
LONG = Len(Word$)

; Conversion du mot en Ascii
If LONG > 0
    position = 1    
    For i = 1 To LONG
        Lettre$ = Mid(Word$,position,1)
        AddElement(mot())
        mot()\min = Asc(LCase(Lettre$)) ; on s'en fout pour ce test
        Mot()\maj = Asc(UCase(Lettre$)) ; on s'en fout pour ce test
        position +1
    Next
    
Else
    Debug "PrOuT"
    End
    
EndIf

IMAGE$ = ""
Fichier$ = OpenFileRequester("Choisissez une image", "", "Image PNG/JPG (*.png/jpg)|*.png;*.jpg", 0)
If Fichier$ = ""
   End
EndIf 


If LoadImage(0,Fichier$)
    
    ;- Passage de l'image en 32bits pour récupérer/créer l'alpha
    
    *ptr=EncodeImage(0 ,#PB_ImagePlugin_PNG, 0, 32)
    CatchImage(1,*ptr)
    FreeImage(0)
    
    L = ImageWidth(1) - LONG
    H = ImageHeight(1) - 2
    
    StartDrawing(ImageOutput(1))
    DrawingMode(#PB_2DDrawing_AlphaChannel)
    POS = L
    ForEach mot()      
        COUL = Point(POS,H)
        Debug "RGBA = " + Str(Red(POS))+","+ Str(Green(POS))+","+ Str(Blue(POS))+","+ Str(Alpha(POS))
        POS+1
    Next   
    StopDrawing()
    
    End
    
    DS$ = GetPathPart(Fichier$)
    FS$ = GetFilePart(Fichier$,#PB_FileSystem_NoExtension)
    Debug DS$+FS$+".png"
    SaveImage(1,DS$+FS$+".png",#PB_ImagePlugin_PNG,0,32 )
    FreeImage(1)
    
    
EndIf


Re: Problème Valeur Alpha avec point() plot()

Publié : ven. 08/juil./2022 21:04
par Ollivier
Salut ArS,

c'est ce mode qu'il faut préciser :

Code : Tout sélectionner

DrawingMode(#PB_2DDrawing_AllChannels)
(= tous les canaux)

Et si ça couine encore, (alpha = 0), alors c'est que l'image est en 24 bpp seulement. Dans ce cas, fais un test à l'ancienne : tu crées une image 32 bpp, puisque tu dessine l'image du fichier dedans :

Code : Tout sélectionner

StartDrawing(ImageOutput(b32) )
   DrawingMode(#PB_2DDrawing_AllChannels)
   DrawAlphaImage(ImageID(b24), 0, 0, 255)
StopDrawing()

Re: Problème Valeur Alpha avec point() plot()

Publié : sam. 09/juil./2022 8:40
par Ar-S
En fait je me suis basé sur la doc qui parle bien d'Alpha_Channel...
Mais peu importe. Même en redessinant l'image puis en PLOT() j'ai toujours 0 en caleur Alpha.
J'ai essayé en #PB_2DDrawing_AlphaBlend #PB_2DDrawing_AllChannel et Alpha_Channel
Franchement c'est étrange. Je pense que la doc serait perfectible de ce coté.

---- EDIT-----
Par contre je viens de me rendre compte de ça .. :?

Code : Tout sélectionner

Debug "RGBA = " + Str(Red(POS))+","+ Str(Green(POS))+","+ Str(Blue(POS))+","+ Str(Alpha(POS))
C'est pas POS mais COUL.... je poursuis mes tests en corrigeant cette erreur de crétin des Alpes

Avec ça et le fait de redessinner en #PB_2DDrawing_AllChannels ça marche.

Merci !


CODE FINAL ICI : viewtopic.php?t=18722

Re: [OK]Problème Valeur Alpha avec point() plot()

Publié : sam. 09/juil./2022 18:20
par Ollivier
J'avais pas grillé que c'était pas coul.

Re: [OK]Problème Valeur Alpha avec point() plot()

Publié : dim. 10/juil./2022 8:20
par kernadec
bjr à tous
pour la fonction : Point(x,y) et RGBA
celle-ci ne fonctionne que dans imageGadget()
Pour CanvasGadget() c'est écrit dans la doc pas de RGBA avec Point(x,y) ni Pixel_(x,y) :?
c est dommage d'avoir un CanvasGadget() qui utilise le RGBA dans la superposition des images
sans pouvoir obtenir le RGBA du mélange de ces couleurs :?
je pense que Fred devrait importer cette option pour CanvasGadget... :)
Cordialement