diff options
Diffstat (limited to 'vendor/gif/examples/explode.rs')
-rw-r--r-- | vendor/gif/examples/explode.rs | 44 |
1 files changed, 0 insertions, 44 deletions
diff --git a/vendor/gif/examples/explode.rs b/vendor/gif/examples/explode.rs deleted file mode 100644 index caa3c34..0000000 --- a/vendor/gif/examples/explode.rs +++ /dev/null @@ -1,44 +0,0 @@ -//! Exports each GIF frame as a separate image. - -use std::env; -use std::fs::File; -use std::path::PathBuf; - -fn main() -> Result<(), Box<dyn std::error::Error>> { - let input_path = PathBuf::from( - env::args_os() - .nth(1) - .ok_or("Specify a GIF path as the first argument")?, - ); - - let input = File::open(&input_path)?; - let mut options = gif::DecodeOptions::new(); - options.set_color_output(gif::ColorOutput::Indexed); - let mut decoder = options.read_info(input)?; - let screen_width = decoder.width(); - let screen_height = decoder.height(); - let global_pal = decoder.global_palette().unwrap_or_default().to_vec(); - - let output_file_stem = input_path.file_stem().unwrap().to_str().unwrap(); - let mut frame_number = 1; - while let Some(frame) = decoder.read_next_frame()? { - let output_path = format!("{}.{:03}.gif", output_file_stem, frame_number); - let mut output = File::create(&output_path)?; - let mut encoder = gif::Encoder::new(&mut output, screen_width, screen_height, &global_pal)?; - encoder.write_frame(&frame)?; - frame_number += 1; - - use gif::DisposalMethod::*; - let disposal = match frame.dispose { - Any => "any", - Keep => "keep", - Background => "background", - Previous => "previous", - }; - eprintln!( - "Written {} ({}x{}@{}x{} delay={} {})", - output_path, frame.width, frame.height, frame.top, frame.left, frame.delay, disposal - ); - } - Ok(()) -} |