Perform strip first

This commit is contained in:
Andrew 2022-11-28 19:24:51 +13:00
parent a1cd3d33bc
commit df34cdf5c5

View file

@ -455,8 +455,6 @@ fn optimize_png(
opts: &Options, opts: &Options,
deadline: Arc<Deadline>, deadline: Arc<Deadline>,
) -> PngResult<Vec<u8>> { ) -> PngResult<Vec<u8>> {
let original_png = png.clone();
// Print png info // Print png info
let file_original_size = original_data.len(); let file_original_size = original_data.len();
let idat_original_size = png.idat_data.len(); let idat_original_size = png.idat_data.len();
@ -481,6 +479,10 @@ fn optimize_png(
info!(" IDAT size = {} bytes", idat_original_size); info!(" IDAT size = {} bytes", idat_original_size);
info!(" File size = {} bytes", file_original_size); info!(" File size = {} bytes", file_original_size);
// Do this first so that reductions can ignore certain chunks such as bKGD
perform_strip(png, opts);
let stripped_png = png.clone();
// Must use normal (lazy) compression, as faster ones (greedy) are not representative // Must use normal (lazy) compression, as faster ones (greedy) are not representative
let eval_compression = 5; let eval_compression = 5;
let eval_filters = indexset! {RowFilter::None, RowFilter::MinSum}; let eval_filters = indexset! {RowFilter::None, RowFilter::MinSum};
@ -592,14 +594,12 @@ fn optimize_png(
png.idat_data.len() png.idat_data.len()
); );
} else if eval_filter.is_some() { } else if eval_filter.is_some() {
*png = original_png; *png = stripped_png;
} }
} else if png.idat_data.len() >= idat_original_size { } else if png.idat_data.len() >= idat_original_size {
*png = original_png; *png = stripped_png;
} }
perform_strip(png, opts);
let output = png.output(); let output = png.output();
if idat_original_size >= png.idat_data.len() { if idat_original_size >= png.idat_data.len() {