Page 2 sur 2

Re: PB transparence non voulue

Publié : dim. 23/oct./2016 11:36
par falsam
A compiler en mode threadé, falsam, d'ou ton erreur
Oops oui ça fonctionne mieux ainsi. Ceci dit, visuellement je préfère mon mode de décomposition du spectre RGB. Mais je conçois que le résultat obtenu par Demivec soit conforme à ta demande.

kenavo ar c'hentañ

Re: PB transparence non voulue

Publié : dim. 23/oct./2016 11:47
par JohnJohnsonSHERMAN
En fait les deux modes rendent approximativement le même résultat en terme de superposition de couleurs, la différence réside juste dans le déplacement des filtres, il me suffira donc de réajuster un peu ton code falsam, a priori donc pas grand chose...
Ah aussi, je viens de remarquer que quand on utilise une grande image dans le code de Demivec, il a parfois des artéfacts bizarres, des flashes de couleurs ou des bandes sur l'image au cours de l'animation... Cela n'arrive qu'avec de grandes images, et quand l'animation dure assez longtemps, et je ne sais pas pourquoi ca fait ca... Remarque c'est pas moche... Ca rajoute un effet de "brouillage" :P

Kenavo ar vec'hall falsam :D

Re: PB transparence non voulue

Publié : dim. 23/oct./2016 14:59
par JohnJohnsonSHERMAN
Allez, parceque je suis content que tout ca marche bien, un autre petit effet en bonus :
Image
A utiliser avec le Barbouille de Dobro, ou autre logiciel graphique, pour l'effet crayonné.
Ca me rappelle certaines intros de séries (genre Un gars une fille ou... merde je sais plus, mais y'en a d'autres), et ca fait assez sympa je trouve...
L'étape suivante : crééer une vidéo automatiquement à partir de ce qui est affiché sur la fenêtre, et voila un éditeur de stopmotion... 8)

Code : Tout sélectionner

UsePNGImageDecoder()
UseJPEGImageDecoder()

Enumeration Objects
  #Window
  #Canvas
  #Txt_RandomOrder
  #Txt_RandomPos
  #Check_RandomOrder
  #Check_RandomPos
  #Btn_Submit
EndEnumeration

Enumeration Constants
  #MainWdth = 800
  #MainHght = 600
  #Delay = 100
  #RandomDelta = 5
EndEnumeration

Files$ = OpenFileRequester("Choisissez des images...","","*.*",0,#PB_Requester_MultiSelection)

NewList Files.s()
NewList Images()

AddElement(Files())
Files() = Files$

While Files$
  Files$ = NextSelectedFileName()
  AddElement(Files())
  Files() = Files$
Wend

LastElement(Files())
DeleteElement(Files())

ForEach Files()
  Debug Files()
  AddElement(Images())
  Images() = LoadImage(#PB_Any, Files())
Next
Debug "Terminé !!"

Procedure Random2(Min, Max)
      ProcedureReturn Random(Max - Min) + Min
  EndProcedure


OpenWindow(#Window, 0, 0, #MainWdth, #MainHght, "Effet étrange n°31.5-HDK-THRM - @SH452/SH_root/serv.us.sher", #PB_Window_ScreenCentered | #PB_Window_SystemMenu)
CanvasGadget(#Canvas, 0, 0, #MainWdth, #MainHght)

AddWindowTimer(#Window, #Delay, #Delay)

Repeat
  event = WaitWindowEvent(100)
  If event = #PB_Event_Timer And EventTimer() = #Delay
    StartDrawing(CanvasOutput(#Canvas))
    DrawImage(ImageID(Images()),Random2(-#RandomDelta,#RandomDelta),Random2(-#RandomDelta,#RandomDelta))
    StopDrawing()
    If Not NextElement(Images())
      FirstElement(Images())
    EndIf
  EndIf
Until event = #PB_Event_CloseWindow

Re: PB transparence non voulue

Publié : dim. 23/oct./2016 22:18
par Demivec
JohnJohnsonSHERMAN a écrit :[*]Plus proche de l'effet d'origine, le filtre vert restant fixe
J'ai mis a jour mon code un peu.


Modifié lignes 92-113 à être:

Code : Tout sélectionner

 For i= 0 To Decal Step 2
    StartDrawing(CanvasOutput(#Canvas))
    Box(0,0,800,800,0)
    DrawImage(ImageID(#Image_green),#ImgX,#ImgY)
    DrawingMode(#PB_2DDrawing_CustomFilter)
    CustomFilterCallback(@DifferenceCustomCallback())
    DrawImage(ImageID(#Image_red),#ImgX+i,#ImgY)
    DrawImage(ImageID(#Image_blue),#ImgX-i,#ImgY)
    StopDrawing()
    Delay(1)
  Next
  For i = Decal To 0 Step -1
    StartDrawing(CanvasOutput(#Canvas))
    Box(0,0,800,800,0)
    DrawImage(ImageID(#Image_green),#ImgX,#ImgY)
    DrawingMode(#PB_2DDrawing_CustomFilter)
    CustomFilterCallback(@DifferenceCustomCallback())
    DrawImage(ImageID(#Image_red),#ImgX+i,#ImgY)
    DrawImage(ImageID(#Image_blue),#ImgX-i,#ImgY)
    StopDrawing()
    Delay(1)
  Next