Need a still from a GIF, or all frames to edit in another program? GIFmeta exports frames as PNG β exactly as they look when the GIF plays, including transparency.
Many simple tools just dump the pixels stored in each frame. For a frame-optimized GIF that gives you small
patches and transparent holes instead of real frames. GIFmeta renders every frame with the correct disposal,
verified pixel-identical to ImageMagickβs -coalesce.
With the command line
# every frame β frames/frame_000.png, frame_001.png, β¦
gifmeta preview input.gif --all --output-dir frames/
# one frame
gifmeta preview input.gif --frame 12 --output frame12.png
# only the pixels stored in each frame (to inspect optimization)
gifmeta preview input.gif --all --raw --output-dir frames-raw/
All frames are rendered in one fast pass. Edit the PNGs and turn them back into a GIF with
gifmeta create:
gifmeta create frames/*.png -o rebuilt.gif --delay 10
In the desktop app
Browse frames in the viewer: β¨ Pretty shows the frame as it plays, π§© Raw shows only the pixels it stores.
In Rust
use gifmeta::{FrameRenderer, PreviewMode};
for frame in FrameRenderer::open("input.gif", PreviewMode::Composited)? {
let frame = frame?; // RenderedFrame { index, delay_cs, image }
frame.image.save(format!("frame_{:03}.png", frame.index))?;
}