Here it is. Had to do some cleaning.
Code: Select all
UsePNGImageDecoder()
UsePNGImageEncoder()
If OpenWindow(0, 0, 0, 400, 165, "Motion Blur", #PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_ScreenCentered)
  
    TextGadget(1, 10, 10, 360, 20, "Image Folder")
    StringGadget(2, 10, 30, 360, 20, "")
    ButtonGadget(3, 370, 30, 20, 20, "...")
    
    TextGadget(4, 10, 60, 360, 20, "Output Folder")
    StringGadget(5, 10, 80, 360, 20, "")
    ButtonGadget(6, 370, 80, 20, 20, "...")
    
    TextGadget(7, 10, 120, 100, 20, "Layers Per Frame")
    StringGadget(8, 100, 115, 40, 20, "100")
    
    ButtonGadget(9, 340, 115, 50, 20, "Render")
    
    CreateStatusBar(10, WindowID(0))
    AddStatusBarField(200)
    AddStatusBarField(200)
    StatusBarText(10, 0, "Total Images: 0")
    StatusBarText(10, 1, "Frames Rendered: 0")
    
    ImageIDs = 0
    FrameNumber = 0
    
   Repeat
     Event = WaitWindowEvent()
      Select Event
       Case #PB_Event_Gadget
        Select EventGadget()
         Case 3 ;Select Image Folder
                InitialPath$ = "C:\"
                InputImages$ = PathRequester("Load images...", InitialPath$)
                
                SetGadgetText(2, InputImages$)
                
                ExamineDirectory(0, InputImages$, "*.png")
                 While NextDirectoryEntry(0)
                
                   ImageIDs +1
                   
                   StatusBarText(10, 0, "Counting Images: " + Str(ImageIDs))
                
                 Wend
                FinishDirectory(0)
                 
                 StatusBarText(10, 0, "Total Images: " + Str(ImageIDs))  
           
         Case 6 ;Select Output Folder
                InitialPath$ = "C:\"
                OutputImages$ = PathRequester("Save images...", InitialPath$)
                
                SetGadgetText(5, OutputImages$)
                
         Case 9 ;Render
                
             ExamineDirectory(1, InputImages$, "*.png")
                
             For Refresh = (ImageIDs / Val(GetGadgetText(8))) To 1 Step -1
                
                Alpha.f = 255 / Val(GetGadgetText(8))
           
                AlphaFade.f = Alpha.f / Val(GetGadgetText(8))
                
                AlphaMinus = Val(GetGadgetText(8))
                
                FramesToRender = (ImageIDs / Val(GetGadgetText(8))) +1
                
                NoAlpha = 1
                
                NewImage = 0
                
                Layers = 0
                
                For AlphaLayer = ImageIDs To 1 Step -1
                  
                   NextDirectoryEntry(1)
                    ImageName$ = DirectoryEntryName(1)
                   
                    LoadImage(AlphaLayer, InputImages$ + ImageName$)
                   W = ImageWidth(ImageIDs)
                   H = ImageHeight(ImageIDs)
                  
                  If NewImage = 0
                  CreateImage(0, W, H, 32 | #PB_Image_Transparent)
                   StartDrawing(ImageOutput(0))
                    DrawingMode(#PB_2DDrawing_Default)
                    NewImage +1
                  EndIf
                    
                       If NoAlpha = 1
                         DrawAlphaImage(ImageID(AlphaLayer), 0, 0, 255)
                       Else
                         DrawAlphaImage(ImageID(AlphaLayer), 0, 0, Alpha.f) ;Stops at Frame 20 when rendering, The specified #Image is not initialized
                       EndIf
                       
                       AlphaMinus -1
                       Alpha.f = AlphaFade.f * AlphaMinus
                       
                      Layers +1
                      NoAlpha +1
                    
                    If Layers = Val(GetGadgetText(8))
                        FrameNumber +1
                         FramesToRender -1
                         SaveImage(0, OutputImages$+Str(FramesToRender)+".png", #PB_ImagePlugin_PNG, 32)
                          StatusBarText(10, 1, "Frames Rendered: " + Str(FrameNumber))
                           StopDrawing()
                            FreeImage(0)
                           
                         For FreeImages = ImageIDs To ImageIDs - Val(GetGadgetText(8))
                           FreeImage(FreeImages)
                         Next FreeImages
                         ImageIDs - Val(GetGadgetText(8))
                       Break
                         
                     EndIf
                    
                  Next AlphaLayer
                
                Next Refresh 
                
              FinishDirectory(1)
          
       EndSelect
     EndSelect
   
   Until Event = #PB_Event_CloseWindow
 
EndIf