If the ImageID returned by GetGadgetState() is from an PB-Image, you could try ImageFromImageID():
Code: Select all
Import ""
PB_Object_EnumerateAll(*object,*callback,*d)
PB_Object_EnumerateStart(*object)
PB_Object_EnumerateNext(*object,*id.Integer)
PB_Object_EnumerateAbort(*object)
PB_Object_Count(*object)
EndImport
Procedure ImageFromImageID(ImageID)
Protected id, Image_Objects, result = -1
CompilerIf #PB_Compiler_Processor = #PB_Processor_x64
!extrn PB_Image_Objects
!PUSH qword [PB_Image_Objects]
!POP qword [p.v_Image_Objects]
CompilerElse
!extrn _PB_Image_Objects
!PUSH dword [_PB_Image_Objects]
!POP dword [p.v_Image_Objects]
CompilerEndIf
PB_Object_EnumerateStart(Image_Objects)
While PB_Object_EnumerateNext(Image_Objects,@id)
If ImageID = ImageID(id)
result = id
PB_Object_EnumerateAbort(Image_Objects)
Break
EndIf
Wend
ProcedureReturn result
EndProcedure
CreateImage(1,200,300)
CreateImage(2,100,150)
img = CreateImage(#PB_Any,123,456)
Debug ImageFromImageID( ImageID(1) )
Debug ImageFromImageID( ImageID(2) )
Debug ImageFromImageID( ImageID(img) )
Debug ImageFromImageID( 12 ) ; wrong, not PB ImageID
If it is not an PB image, it returns -1.
Code: Select all
MyImageID = GetGadgetState(#MyImgGadget)
MyImage = ImageFromImageID(MyImageID)
If MyImage <> -1
SaveImage(MyImage, MyPath, #PB_ImagePlugin_PNG, 10, 24)
EndIf