24 lines
799 B
Rust
24 lines
799 B
Rust
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<Vec<u8>, 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)
|
|
}
|
|
}
|