use crate::plugin::Plugin; use image::ImageFormat; use std::io::Cursor; pub struct PluginImpl; impl Plugin for PluginImpl { fn name(&self) -> &'static str { "jpeg_to_png" } fn from_formats(&self) -> Vec<&'static str> { vec!["jpeg"] } fn to_formats(&self) -> Vec<&'static str> { vec!["png"] } fn familiarity(&self) -> u8 { 255 } fn quality(&self) -> u8 { 255 } fn speed(&self) -> u8 { 200 } fn convert(&self, input: &[u8], _from: &str, _to: &str) -> Result, String> { let img = image::load_from_memory_with_format(input, ImageFormat::Jpeg) .map_err(|e| e.to_string())?; let mut buf = Vec::new(); img.write_to(&mut Cursor::new(&mut buf), ImageFormat::Png) .map_err(|e| e.to_string())?; Ok(buf) } }