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