Skip to content

Instantly share code, notes, and snippets.

@Ploppz
Created June 9, 2017 19:50
Show Gist options
  • Save Ploppz/5071ee05c3cd5765d11a434527e93c29 to your computer and use it in GitHub Desktop.
Save Ploppz/5071ee05c3cd5765d11a434527e93c29 to your computer and use it in GitHub Desktop.
println!("DEBUG PARAMS {:?}", params.as_ref().unwrap());
println!("DEBUG DATA(len: {}): {:?}", out.len(), &out);
assert!(out.len() % (columns+1) == 0);
// Then unfilter (PNG)
let input = out;
let mut out = Vec::<u8>::new();
out.resize(input.len() / (columns+1) * columns, 0); // One less byte per row
if predictor > 10 {
// Apply inverse predictor
let null_vec = vec![0; columns];
let mut prev_row: &[u8] = &null_vec;
let mut i_in = 0;
let mut i_out = 0;
while i_in < input.len() {
// +1 generally because the first byte on each row is predictor
let predictor_nr = input[i_in];
let row = &input[(i_in+1)..(i_in+1+columns)];
let out_row = &mut out[(i_out)..(i_out+columns)];
unfilter(PredictorType::from_u8(predictor_nr)?, n_components, prev_row, row, out_row);
prev_row = &input[(i_in+1)..(i_in+1+columns)];
i_in += columns + 1;
i_out += columns;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment