From be0c6f5914cd57d594e33d22308cbf2742aedb0d Mon Sep 17 00:00:00 2001 From: Magic Len Date: Sun, 12 Aug 2018 22:45:19 +0800 Subject: [PATCH 1/2] Binding for sharpen_image --- src/wand/magick.rs | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/wand/magick.rs b/src/wand/magick.rs index 4888ed3..9b3767c 100644 --- a/src/wand/magick.rs +++ b/src/wand/magick.rs @@ -362,6 +362,25 @@ impl MagickWand { } } + /// Sharpens an image. We convolve the image with a Gaussian operator of the + /// given radius and standard deviation (sigma). For reasonable results, the + /// radius should be larger than sigma. Use a radius of 0 and SharpenImage() + /// selects a suitable radius for you. + /// + /// radius: the radius of the Gaussian, in pixels, not counting the center pixel. + /// + /// sigma: the standard deviation of the Gaussian, in pixels. + /// + pub fn sharpen_image(&self, radius: f64, sigma: f64) -> Result<(), &'static str> { + match unsafe { bindings::MagickSharpenImage(self.wand, radius, sigma) } { + + bindings::MagickBooleanType::MagickTrue => Ok(()), + + _ => Err("SharpenImage returned false") + + } + } + /// Returns the image resolution as a pair (horizontal resolution, vertical resolution) pub fn get_image_resolution(&self) -> Result<(f64, f64), &'static str> { let mut x_resolution = 0f64; From fd8f5e49a2530959b43a49ce9caf2ca422979d4b Mon Sep 17 00:00:00 2001 From: Magic Len Date: Sun, 12 Aug 2018 23:05:45 +0800 Subject: [PATCH 2/2] Binding for set_image_background_color --- src/wand/magick.rs | 13 +++++++++++++ tests/data/rust.png | Bin 0 -> 8496 bytes tests/lib.rs | 36 +++++++++++++++++++++++++++++++++++- 3 files changed, 48 insertions(+), 1 deletion(-) create mode 100644 tests/data/rust.png diff --git a/src/wand/magick.rs b/src/wand/magick.rs index 9b3767c..0653b65 100644 --- a/src/wand/magick.rs +++ b/src/wand/magick.rs @@ -381,6 +381,19 @@ impl MagickWand { } } + /// Set the image background color. + pub fn set_image_background_color(&self, pixel_wand: &PixelWand) -> Result<(), &'static str> { + + match unsafe { bindings::MagickSetImageBackgroundColor(self.wand, pixel_wand.wand) } { + + bindings::MagickBooleanType::MagickTrue => Ok(()), + + _ => Err("SetImageBackgroundColor returned false") + + } + + } + /// Returns the image resolution as a pair (horizontal resolution, vertical resolution) pub fn get_image_resolution(&self) -> Result<(f64, f64), &'static str> { let mut x_resolution = 0f64; diff --git a/tests/data/rust.png b/tests/data/rust.png new file mode 100644 index 0000000000000000000000000000000000000000..11c6de63c36ddb2f7ffb571aac78207e5a210386 GIT binary patch literal 8496 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 eQ4~dK