From 0f8d8bd97c9ea13bd5c8fec0b616ae3eb3f3f3cc Mon Sep 17 00:00:00 2001 From: David Bernard Date: Tue, 7 Jan 2025 14:14:47 +0100 Subject: [PATCH] =?UTF-8?q?=E2=AC=86=EF=B8=8F=20Update=20image,=20nalgebra?= =?UTF-8?q?,=20ndarray,=20num-traits=20requirement?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Cargo.toml | 16 ++++++++++------ src/show_image.rs | 20 ++++++++++---------- src/show_ndarray.rs | 2 +- 3 files changed, 21 insertions(+), 17 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 7dd1af4..9126d9d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -16,14 +16,14 @@ opener = "^0.7" anyhow = "^1.0" #arrow = {version = "0.13.0", optional = true} # nightly -image = {version = "^0.23", optional = true} -nalgebra = {version = "^0.26", optional = true} -num-traits = {version = "^0.2", optional = true} -ndarray = {version = "^0.15", optional = true} +image = { version = "^0.25", optional = true } +nalgebra = { version = "^0.33", optional = true } +num-traits = { version = "^0.2", optional = true } +ndarray = { version = "^0.16", optional = true } [dev-dependencies] -mime = "0.3.14" -nalgebra = "0.26.1" +mime = "0.3" +nalgebra = "0.33" [features] default = [] @@ -31,3 +31,7 @@ all = ["show_nalgebra", "show_ndarray", "show_image"] show_nalgebra = ["nalgebra", "num-traits"] show_ndarray = ["ndarray"] show_image = ["image"] + +[[example]] +name = "sample_nalgebra" +required-features = ["nalgebra"] diff --git a/src/show_image.rs b/src/show_image.rs index 6209ca6..9ba628e 100644 --- a/src/show_image.rs +++ b/src/show_image.rs @@ -14,6 +14,9 @@ use crate::Showable; use anyhow::{anyhow, Error}; use base64::prelude::*; use image; +use image::EncodableLayout; +use image::PixelWithColorType; +use std::io::Cursor; use std::ops::Deref; impl Showable for image::DynamicImage { @@ -34,17 +37,14 @@ impl Showable for image::DynamicImage { impl Showable for image::ImageBuffer where - P: image::Pixel + 'static, - Container: Deref, + P: PixelWithColorType, + [P::Subpixel]: EncodableLayout, + Container: Deref, { fn to_content_info(&self) -> Result { - let mut buffer = Vec::new(); - image::png::PngEncoder::new(&mut buffer).encode( - self, - self.width(), - self.height(), -

::COLOR_TYPE, - )?; + let mut buffer: Vec = Vec::new(); + self.write_to(&mut Cursor::new(&mut buffer), image::ImageFormat::Png)?; + Ok(ContentInfo { content: BASE64_STANDARD.encode(&buffer), mime_type: "image/png;base64".into(), @@ -89,7 +89,7 @@ mod tests { #[test] fn test_show_gen_image() { - let img = image::ImageBuffer::from_fn(256, 256, |x, y| { + let img = image::RgbImage::from_fn(256, 256, |x, y| { if (x as i32 - y as i32).abs() < 3 { image::Rgb([0, 0, 255]) } else { diff --git a/src/show_ndarray.rs b/src/show_ndarray.rs index eea43c5..d41c6f1 100644 --- a/src/show_ndarray.rs +++ b/src/show_ndarray.rs @@ -34,7 +34,7 @@ where html.push_str(&format!("{}", c)); } html.push_str(""); - for (r, row) in v.genrows().into_iter().enumerate() { + for (r, row) in v.rows().into_iter().enumerate() { html.push_str(""); html.push_str(&format!("{}", r)); for v in row.iter() {