image-effects/src/lib.rs
2021-10-28 13:25:32 -04:00

31 lines
No EOL
788 B
Rust

use wasm_bindgen::prelude::*;
use web_sys::console::log_1 as log;
use base64::{ encode, decode };
use image::load_from_memory;
use image::ImageOutputFormat::Png;
#[wasm_bindgen]
pub fn grayscale(encoded_file: &str) -> String {
log(&"Grayscale called".into());
let base64_to_vector = decode(encoded_file).unwrap();
log(&"Image decoded".into());
let mut img = load_from_memory(&base64_to_vector).unwrap();
log(&"Image loaded".into());
img = img.grayscale();
log(&"Grayscale effect applied".into());
let mut buffer = vec![];
img.write_to(&mut buffer, Png).unwrap();
log(&"New image written".into());
let encoded_img = encode(&buffer);
let data_url = format!(
"data:image/png;base64,{}",
encoded_img
);
data_url
}