use image::ImageError;
use image::DynamicImage;
use wasm_bindgen::prelude::*;
fn load_image_from_b64(image_base64: &str) -> Result<DynamicImage, ImageError> {
let clean = image_base64
.replace("data:image/jpeg;base64,", "")
.replace("data:image/jpg;base64,", "")
.replace("data:image/png;base64,", "")
.replace("data:image/avif;base64,", "")
.replace("data:image/gif;base64,", "")
.replace("data:image/bmp;base64,", "")
.replace("data:image/ico;base64,", "")
.replace("data:image/tga;base64,", "")
.replace("data:image/webm;base64,", "");
let image_src = base64::decode(clean).unwrap();
println!("Image decode OK");
image::load_from_memory(&image_src)
}
#[wasm_bindgen]
pub fn extract_from_image(image_base64: &str, n: usize) -> String {
let image = load_image_from_b64(image_base64).unwrap();
let result = super::extract_from_image(image, n);
serde_json::to_string(&result).unwrap()
}
#[cfg(test)]
mod tests {
use super::load_image_from_b64;
#[test]
fn image_loading_works() {
let _ = load_image_from_b64(r#"data:image/jpeg;base64,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bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIiB4bWxuczpHSU1QPSJodHRwOi8vd3d3LmdpbXAub3JnL3htcC8iIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1wTU06RG9jdW1lbnRJRD0iZ2ltcDpkb2NpZDpnaW1wOjZiZjM5MTU5LTZiODMtNDI5OC1iM2U1LTUzZTcxODRiZDUwMiIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpiYzUwOTUzMy1hOGQxLTRlZDAtOWNkZS0yMzMwNThiMTNmMDUiIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDplZTI5MDhiMy05OTFiLTRlNjQtYjU5YS04NjdmNWY3Mjk1OWIiIGRjOkZvcm1hdD0iaW1hZ2UvanBlZyIgR0lNUDpBUEk9IjIuMCIgR0lNUDpQbGF0Zm9ybT0iTGludXgiIEdJTVA6VGltZVN0YW1wPSIxNjU5MzQ0MTM0NDkxMTQ5IiBHSU1QOlZlcnNpb249IjIuMTAuMzIiIHhtcDpDcmVhdG9yVG9vbD0iR0lNUCAyLjEwIiB4bXA6TWV0YWRhdGFEYXRlPSIyMDIyOjA4OjAxVDExOjU1OjMzKzAzOjAwIiB4bXA6TW9kaWZ5RGF0ZT0iMjAyMjowODowMVQxMTo1NTozMyswMzowMCI+IDx4bXBNTTpIaXN0b3J5PiA8cmRmOlNlcT4gPHJkZjpsaSBzdEV2dDphY3Rpb249InNhdmVkIiBzdEV2dDpjaGFuZ2VkPSIvIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOmY2MzYwYTg0LWFmNzUtNDc3Zi1iNDcwLWQ3OTAyNGJhMTcxZiIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iR2ltcCAyLjEwIChMaW51eCkiIHN0RXZ0OndoZW49IjIwMjItMDgtMDFUMTE6NTU6MzQrMDM6MDAiLz4gPC9yZGY6U2VxPiA8L3htcE1NOkhpc3Rvcnk+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/eHBhY2tldCBlbmQ9InciPz7/4gKwSUNDX1BST0ZJTEUAAQEAAAKgbGNtcwQwAABtbnRyUkdCIFhZWiAH5gAIAAEACAA3ABBhY3NwQVBQTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWxjbXMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1kZXNjAAABIAAAAEBjcHJ0AAABYAAAADZ3dHB0AAABmAAAABRjaGFkAAABrAAAACxyWFlaAAAB2AAAABRiWFlaAAAB7AAAABRnWFlaAAACAAAAABRyVFJDAAACFAAAACBnVFJDAAACFAAAACBiVFJDAAACFAAAACBjaHJtAAACNAAAACRkbW5kAAACWAAAACRkbWRkAAACfAAAACRtbHVjAAAAAAAAAAEAAAAMZW5VUwAAACQAAAAcAEcASQBNAFAAIABiAHUAaQBsAHQALQBpAG4AIABzAFIARwBCbWx1YwAAAAAAAAABAAAADGVuVVMAAAAaAAAAHABQAHUAYgBsAGkAYwAgAEQAbwBtAGEAaQBuAABYWVogAAAAAAAA9tYAAQAAAADTLXNmMzIAAAAAAAEMQgAABd7///MlAAAHkwAA/ZD///uh///9ogAAA9wAAMBuWFlaIAAAAAAAAG+gAAA49QAAA5BYWVogAAAAAAAAJJ8AAA+EAAC2xFhZWiAAAAAAAABilwAAt4cAABjZcGFyYQAAAAAAAwAAAAJmZgAA8qcAAA1ZAAAT0AAACltjaHJtAAAAAAADAAAAAKPXAABUfAAATM0AAJmaAAAmZwAAD1xtbHVjAAAAAAAAAAEAAAAMZW5VUwAAAAgAAAAcAEcASQBNAFBtbHVjAAAAAAAAAAEAAAAMZW5VUwAAAAgAAAAcAHMAUgBHAEL/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/wgARCAAMAAwDAREAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAABgID/8QAGAEAAgMAAAAAAAAAAAAAAAAAAAIBAwT/2gAMAwEAAhADEAAAATdRuul5Jbp//8QAGRAAAwADAAAAAAAAAAAAAAAAAgMEAQUi/9oACAEBAAEFAqoFyivWiYMQD1hjn//EABsRAAIDAAMAAAAAAAAAAAAAAAABAgMREjJR/9oACAEDAQE/AbJOGHH0cVJYyrrh/8QAGBEAAwEBAAAAAAAAAAAAAAAAAAERAhL/2gAIAQIBAT8BzzpOlRBo/8QAHhAAAgEDBQAAAAAAAAAAAAAAAQISAAMREDJBUcH/2gAIAQEABj8Cnc29igwtMwPMseVB1yNP/8QAGhAAAgMBAQAAAAAAAAAAAAAAAREAITGBcf/aAAgBAQABPyFbiLMBJaecMuxQCF+NLctFZBHxU//aAAwDAQACAAMAAAAQ4c//xAAdEQEAAgICAwAAAAAAAAAAAAABABEhMUFhgZHB/9oACAEDAQE/ELGFig+edn2ANs9RCdjBWTSnpqf/xAAYEQEBAQEBAAAAAAAAAAAAAAABEQBBYf/aAAgBAgEBPxCQcQp66fFyXFd//8QAGxABAQACAwEAAAAAAAAAAAAAAREAITFBUeH/2gAIAQEAAT8QJwuyYRADdB0euDZYhA7PoclwNKVRERNmwwgINtzmMz//2Q=="#);
}
}