rust: create target dir, use frames/basename as decode.py
This commit is contained in:
17
src/lib.rs
17
src/lib.rs
@@ -251,15 +251,26 @@ fn decode(filename: &str) -> PyResult<PyFrameIterator> {
|
||||
Ok(iter.into())
|
||||
}
|
||||
|
||||
pub fn decode_to_files(filename: &str, frames_root: &str) -> anyhow::Result<()> {
|
||||
/// writes to frames/<basename of filename>
|
||||
pub fn decode_to_files(filename: &str) -> anyhow::Result<()> {
|
||||
let frameiter = Decoder::new(filename)?;
|
||||
let basename = std::path::Path::new(filename)
|
||||
.file_stem()
|
||||
.ok_or(anyhow::anyhow!("cannot get basename"))?
|
||||
.to_str()
|
||||
.ok_or(anyhow::anyhow!("cannot convert to utf-8 from os name"))?;
|
||||
let target_dir = format!("frames/{}", basename);
|
||||
let target_dir = std::path::Path::new(&target_dir);
|
||||
if !target_dir.exists() {
|
||||
std::fs::create_dir(target_dir)?;
|
||||
}
|
||||
for (i, frame) in frameiter.enumerate() {
|
||||
let name = format!("{}/{:05}.png", frames_root, i);
|
||||
let name = format!("frames/{}/{:05}.png", basename, i);
|
||||
if let Err(_e) = write_raw_frame(&name, &frame.raw) {
|
||||
println!("skipping bad frame {}", i);
|
||||
continue;
|
||||
}
|
||||
let name = format!("{}/temp_{:05}.png", frames_root, i);
|
||||
let name = format!("{}/temp_{:05}.png", target_dir.display(), i);
|
||||
let pixels = frame.pixels();
|
||||
write_calibrated_frame(&name, &pixels)?;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user