RGB trennen und jeweils den gewünschten kanal als grau
Verfasst: 26.08.2020 07:20
Ich habe eine Prozedur geschrieben die ein Image reingegeben bekommen soll und je nach gadget auswahl jeweils rot grün oder blau als graues bild zurück geben soll, die routiene läuft eigentlich auch so weit, aber halt nicht immer, gibt es denn keine bessere variante? Könnte mir jemand von euch helfen? Vielen Dank.
Code: Alles auswählen
Procedure UseFilter(TF_Image)
IMX=ImageWidth(TF_Image)
IMY=ImageHeight(TF_Image)
IMD=ImageDepth(TF_Image)
;If Endpic.i=CreateImage(#PB_Any,IMX,IMY,IMD)
If CreateImage(101,IMX,IMY,IMD)
StartDrawing(ImageOutput(101))
DrawingMode(#PB_2DDrawing_CustomFilter)
If GetGadgetState(19)=1
CustomFilterCallback(@RedFilter())
EndIf
If GetGadgetState(19)=2
CustomFilterCallback(@GreenFilter())
EndIf
If GetGadgetState(19)=3
CustomFilterCallback(@BlueFilter())
EndIf
If GetGadgetState(19)=4
CustomFilterCallback(@RGBFilter())
EndIf
DrawImage(ImageID(TF_Image), 0, 0)
StopDrawing()
;SaveImage(101, DirectoryEntryName(0)+"Red.png",#PB_ImagePlugin_PNG)
;FreeImage(101)
EndIf
BF_Image=CopyImage(101,#PB_Any)
FreeImage(TF_Image)
FreeImage(101)
ProcedureReturn (BF_Image)
EndProcedure