Salut,
Pour fusionner une image par dessus une autre, tu dois utiliser
Code : Tout sélectionner
Startdrawing(imageOutput (#imageCible))
Drawimage ou DrawAlphaImage pour dessiner l'image 2 dans l'image 1
StopDrawing()
Puis reactualiser le gadget via setgadgetstate(#gadgetimage, imageID(#imageCible))
Voilà un code de démonstration. Un peu long car pour éviter de galérer à poster des images, j'utilise des images du web (dont la tienne)
Code : Tout sélectionner
InitNetwork()
Enumeration
#win
#bt1
#bt2
#IM1
#IM2
#igadget
EndEnumeration
Declare Loadimage_net(Adr$, IDimage, NomDestination$)
UsePNGImageDecoder()
Global Li, Hi
Adr1$="https://upimg.ldvmultimedia.com/img/test.png"
Adr2$="https://www.ldvmultimedia.com/img/sospc.png"
NomDest$ = "01.png" ; si tu veux les enregistrer
NomDest2$ = "02.png" ; si tu veux les enregistrer
Procedure Loadimage_net(Adr$, IDimage, NomDestination$)
;Ar-S
Telechargement = ReceiveHTTPMemory(Adr$, #PB_HTTP_Asynchronous)
If Telechargement
Repeat
Progression = HTTPProgress(Telechargement)
Select Progression
Case #PB_HTTP_Success
*Memoire = FinishHTTP(Telechargement)
If CatchImage(IDimage,*memoire,MemorySize(*Memoire)) <> 0
; SaveImage(Image,GetTemporaryDirectory() + NomDestination$) ; ou pas
FreeMemory(*Memoire)
ProcedureReturn IDimage
Else
IDimage = 0
ProcedureReturn 0
EndIf
Case #PB_HTTP_Failed,#PB_HTTP_Aborted
Debug "Erreur au téléchargement"
IDimage = 0
ProcedureReturn 0
Default
Debug "Téléchargement en cours: " + Progression + "octets reçus"
EndSelect
Delay(500) ; Libérer le CPU
ForEver
Else
Debug "Erreur de téléchargement"
EndIf
ProcedureReturn IDimage
EndProcedure
;-// EXEMPLE
;
err = 0
If Loadimage_net(Adr1$, #IM1, NomDest$) = 0
err+1
EndIf
If Loadimage_net(Adr2$, #IM2, NomDest2$) = 0
err+1
EndIf
If err > 0
Debug "Probleme de chargement d'image
End
EndIf
HI = ImageHeight(#im1)
LI = ImageWidth(#im1)
If OpenWindow(#WIN, 0, 0, LI, HI+31, "Exemple...", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ButtonGadget (#bt1, 0, hi+1, LI/2, 30, "Fermer")
ButtonGadget (#bt2, LI/2+5, hi+1, LI/2-10, 30, "Overlay")
ImageGadget(#igadget,0,0,LI,HI,ImageID(#im1))
Repeat
Event = WaitWindowEvent()
Select Event
Case #PB_Event_Gadget
Select EventGadget()
Case #BT1
CloseWindow(0)
End
Case #BT2 ; Overlay
StartDrawing(ImageOutput(#im1))
DrawAlphaImage(ImageID(#im2),0,5,255) ; On dessin l'image 2 sur l'image 1 (tu peux tout aussi créer une image 3 vierge si tu veux garder l'image 1 intacte...
StopDrawing()
SetGadgetState(#igadget,ImageID(#im1)) ; On affiche l'image 1 modifiée
EndSelect
EndSelect
Until Event = #PB_Event_CloseWindow
EndIf
FreeImage(#im1) ; => à mettre en fin de code
FreeImage(#im2)