Why resizing an animation is different
A still image is one grid of pixels, so resizing it is a single operation. An animated GIF is a sequence of frames with their own timing, an optional local palette per frame, and a loop instruction for the player. Resizing it means taking all of that apart, resampling each frame, and reassembling a valid animation — while keeping the delays and the loop flag so playback is unchanged.
This is why so many general-purpose image tools quietly return a still picture when given a GIF. They read the first frame, resize that, and write it back out. The file is still a valid GIF and still opens, so the failure is easy to miss until you notice nothing is moving. Here every frame is read, and the frame count of the output is measured and displayed so the outcome is not left to chance.