Frames become chunks, not files
Every uploaded image is written into the output as one animation frame. The file gets an acTL chunk declaring total frame count and loop count, then each frame after the first is preceded by an fcTL control chunk (width, height, offset, delay, dispose and blend mode) and its pixel data in fdAT chunks. The first frame's pixels stay in an ordinary IDAT chunk, so it still renders as a normal PNG in apps that ignore animation.