diff --git a/src/dc_tools.rs b/src/dc_tools.rs index c46b75587..1d887edde 100644 --- a/src/dc_tools.rs +++ b/src/dc_tools.rs @@ -243,7 +243,7 @@ pub fn dc_get_filesuffix_lc(path_filename: impl AsRef) -> Option { /// Returns the `(width, height)` of the given image buffer. pub fn dc_get_filemeta(buf: &[u8]) -> Result<(u32, u32), Error> { - let image = image::io::Reader::new(Cursor::new(buf)); + let image = image::io::Reader::new(Cursor::new(buf)).with_guessed_format()?; let dimensions = image.into_dimensions()?; Ok(dimensions) } @@ -916,4 +916,22 @@ mod tests { "3h 1m 0s" ); } + + #[test] + fn test_get_filemeta() { + let data = include_bytes!("../test-data/image/avatar900x900.png"); + let (w, h) = dc_get_filemeta(data).unwrap(); + assert_eq!(w, 900); + assert_eq!(h, 900); + + let data = include_bytes!("../test-data/image/avatar1000x1000.jpg"); + let (w, h) = dc_get_filemeta(data).unwrap(); + assert_eq!(w, 1000); + assert_eq!(h, 1000); + + let data = include_bytes!("../test-data/image/image100x50.gif"); + let (w, h) = dc_get_filemeta(data).unwrap(); + assert_eq!(w, 100); + assert_eq!(h, 50); + } } diff --git a/test-data/image/image100x50.gif b/test-data/image/image100x50.gif new file mode 100644 index 000000000..4fb120fff Binary files /dev/null and b/test-data/image/image100x50.gif differ