From 58c6bd29b2efd14d7ae386124adf0750e6179370 Mon Sep 17 00:00:00 2001 From: "Adam T. Carpenter" Date: Sat, 3 Oct 2020 20:13:46 -0400 Subject: added test for converting image uri to files, updated debug script --- dichroism/src/image_api.rs | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 dichroism/src/image_api.rs (limited to 'dichroism/src/image_api.rs') diff --git a/dichroism/src/image_api.rs b/dichroism/src/image_api.rs new file mode 100644 index 0000000..d1649d5 --- /dev/null +++ b/dichroism/src/image_api.rs @@ -0,0 +1,40 @@ +use crate::result::Result; +use base64::decode; +use regex::Regex; + +lazy_static! { + static ref DATA_URI_RE: Regex = + Regex::new("^data:image/(png|jpeg);base64,(?P.+)").expect("Couldn't parse Regex!"); +} + +pub fn data_uri_to_files(uri: &str) -> Result<()> { + let caps = if let Some(c) = DATA_URI_RE.captures(uri) { + c + } else { + todo!(); + }; + + let data = caps + .name("data") + .expect("Data URI data extraction should never fail.") + .as_str(); + + let bytes = decode(data)?; + let img = image::load_from_memory(&bytes)?; + img.save("test_full.jpg")?; + let thumb = img.thumbnail(200, 200); + thumb.save("test_thumbnail.jpg")?; + Ok(()) +} + +#[cfg(test)] +mod tests { + use super::*; + + const TEST_DATA_URI: &str = include_str!("unit_test_data/img_data_uri.txt"); + + #[test] + fn test_data_uri_to_files() { + data_uri_to_files(TEST_DATA_URI).unwrap(); + } +} -- cgit v1.2.3