From 478fafef4c83446f9415b7502f6a6712af00cf32 Mon Sep 17 00:00:00 2001 From: Lilith River Date: Sun, 22 Nov 2020 00:12:58 -0700 Subject: [PATCH] Optimize png size when applying opaque matte color --- imageflow_core/src/codecs/libpng_encoder.rs | 4 ++++ imageflow_core/src/codecs/mozjpeg.rs | 1 + 2 files changed, 5 insertions(+) diff --git a/imageflow_core/src/codecs/libpng_encoder.rs b/imageflow_core/src/codecs/libpng_encoder.rs index b0d47579c..5fdddafeb 100644 --- a/imageflow_core/src/codecs/libpng_encoder.rs +++ b/imageflow_core/src/codecs/libpng_encoder.rs @@ -48,6 +48,10 @@ impl Encoder for LibPngEncoder { bitmap.get_window_u8().unwrap() .apply_matte(color.clone()) .map_err(|e| e.at(here!()))?; + // Optimize png size + if color.is_opaque(){ + bitmap.set_alpha_meaningful(false); + } } } diff --git a/imageflow_core/src/codecs/mozjpeg.rs b/imageflow_core/src/codecs/mozjpeg.rs index 548df0f5f..1790fe125 100644 --- a/imageflow_core/src/codecs/mozjpeg.rs +++ b/imageflow_core/src/codecs/mozjpeg.rs @@ -69,6 +69,7 @@ impl Encoder for MozjpegEncoder { .apply_matte(self.matte.clone().unwrap_or( imageflow_types::Color::Srgb(imageflow_types::ColorSrgb::Hex("FFFFFFFF".to_owned())))) .map_err(|e| e.at(here!()))?; + bitmap.set_alpha_meaningful(false); let frame = unsafe{ bitmap.get_window_u8() .ok_or_else(|| nerror!(ErrorKind::InvalidBitmapType))?