31 lines
No EOL
788 B
Rust
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
|
|
} |