diff options
author | metamuffin <metamuffin@disroot.org> | 2023-09-26 07:52:10 +0200 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2023-09-26 07:52:10 +0200 |
commit | 02c830dec5cc3824cf7cbd4c6bb61c2e7d14195f (patch) | |
tree | 38769e5cd4787ee557f6665eb68b7ea5ef62467f /transcoder/src/image.rs | |
parent | 74be31a55c8a9fc533a445bc65c08154469d21c6 (diff) | |
parent | 7efece270151d8a22e3d5f209cf9707d989c4ac5 (diff) | |
download | jellything-02c830dec5cc3824cf7cbd4c6bb61c2e7d14195f.tar jellything-02c830dec5cc3824cf7cbd4c6bb61c2e7d14195f.tar.bz2 jellything-02c830dec5cc3824cf7cbd4c6bb61c2e7d14195f.tar.zst |
Merge branch 'master' of codeberg.org:metamuffin/jellything
Diffstat (limited to 'transcoder/src/image.rs')
-rw-r--r-- | transcoder/src/image.rs | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/transcoder/src/image.rs b/transcoder/src/image.rs index c28ef2b..6da1be7 100644 --- a/transcoder/src/image.rs +++ b/transcoder/src/image.rs @@ -1,6 +1,8 @@ +use anyhow::Context; +use image::{imageops::FilterType, ImageFormat}; use jellybase::{cache_file, AssetLocationExt}; use jellycommon::AssetLocation; -use log::info; +use log::{debug, info}; use rgb::FromSlice; use std::{ fs::File, @@ -22,14 +24,18 @@ pub fn transcode( .path(); if !path.exists() { info!("encoding {path:?} (speed={speed}, quality={quality}, width={width})"); - let reader = image::io::Reader::new(BufReader::new(File::open(original_path)?)) - .with_guessed_format()?; - let original = reader.decode()?.to_rgba8(); + // TODO shouldn't be neccessary with guessed format. + let file = BufReader::new(File::open(&original_path).context("opening source")?); + let mut reader = image::io::Reader::new(file); + reader.set_format(ImageFormat::Avif); + let reader = reader.with_guessed_format().context("guessing format")?; + debug!("guessed format (or fallback): {:?}", reader.format()); + let original = reader.decode().context("decoding image")?.to_rgba8(); let image = image::imageops::resize( &original, width as u32, width as u32 * original.height() / original.width(), - image::imageops::FilterType::Lanczos3, + FilterType::Lanczos3, ); let pixels = image.to_vec(); let encoded = ravif::Encoder::new() |