From 9dce76f0b0f0ac6ca02c0f6fb6582c6327e56fbe Mon Sep 17 00:00:00 2001 From: Mark Hoekveen Date: Tue, 25 Jun 2024 17:21:56 +0200 Subject: [PATCH] wasm --- src/wasm/mod.rs | 51 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 src/wasm/mod.rs diff --git a/src/wasm/mod.rs b/src/wasm/mod.rs new file mode 100644 index 0000000..6e06b40 --- /dev/null +++ b/src/wasm/mod.rs @@ -0,0 +1,51 @@ +use crate::descriptors::DCT; +extern crate wasm_bindgen; +use wasm_bindgen::prelude::*; +use std::io::Cursor; +use console_error_panic_hook; + +#[wasm_bindgen] +extern { + fn alert(s: &str); +} + +#[wasm_bindgen] +pub fn greet() { + alert("Hello world!"); +} + +#[wasm_bindgen] +pub fn dctify(bytes: Vec) -> Vec { + console_error_panic_hook::set_once(); + let reader = + image::io::Reader + ::new(Cursor::new(bytes)).with_guessed_format().unwrap(); + let img: image::DynamicImage = + reader + .decode() + .unwrap(); + let dct = DCT::new(); + let values = dct.dct(&img); + Vec::from(values) +} + +#[wasm_bindgen] +pub fn resize(bytes: Vec) -> Vec { + console_error_panic_hook::set_once(); + let reader = + image::io::Reader + ::new(Cursor::new(bytes)).with_guessed_format().unwrap(); + + let img: image::DynamicImage = + reader + .decode() + .unwrap(); + + let resized = img.grayscale().thumbnail_exact(8, 8); + let mut buffer: Vec = Vec::new(); + let mut writer = std::io::Cursor::new(&mut buffer); + + resized.write_to(&mut writer, image::ImageFormat::Png).unwrap(); + + buffer +} \ No newline at end of file