Wire progressive JPEG, AVIF speed, and custom per-format quality to encoder

This commit is contained in:
2026-03-06 15:07:54 +02:00
parent 3bc3d89ead
commit cd286a23de
5 changed files with 66 additions and 9 deletions

View File

@@ -1265,9 +1265,31 @@ fn run_processing(_window: &adw::ApplicationWindow, ui: &WizardUi) {
}
if cfg.compress_enabled {
job.compress = Some(pixstrip_core::operations::CompressConfig::Preset(cfg.quality_preset));
// Check if user has customized per-format quality values beyond the preset defaults
let preset_jpeg = cfg.quality_preset.jpeg_quality();
let preset_webp = cfg.quality_preset.webp_quality();
let has_custom = cfg.jpeg_quality != preset_jpeg
|| cfg.webp_quality != preset_webp as u8
|| cfg.avif_quality != preset_webp as u8
|| cfg.avif_speed != 6
|| cfg.webp_effort != 4;
if has_custom {
job.compress = Some(pixstrip_core::operations::CompressConfig::Custom {
jpeg_quality: Some(cfg.jpeg_quality),
png_level: Some(cfg.png_level),
webp_quality: Some(cfg.webp_quality as f32),
avif_quality: Some(cfg.avif_quality as f32),
});
} else {
job.compress = Some(pixstrip_core::operations::CompressConfig::Preset(cfg.quality_preset));
}
}
// Pass encoder options to the job
job.progressive_jpeg = cfg.progressive_jpeg;
job.avif_speed = cfg.avif_speed;
if cfg.metadata_enabled {
job.metadata = Some(match cfg.metadata_mode {
MetadataMode::StripAll => pixstrip_core::operations::MetadataConfig::StripAll,