Merge pull request #56 from Storykit/feature/clut_image

Binding for MagickClutImage
This commit is contained in:
Nathan Fiedler
2020-03-25 08:07:59 -07:00
committed by GitHub
2 changed files with 48 additions and 0 deletions

View File

@ -230,6 +230,27 @@ impl MagickWand {
} }
} }
// Replaces colors in the image from a color lookup table.
pub fn clut_image(
&self,
clut_wand: &MagickWand,
method: bindings::PixelInterpolateMethod,
) -> Result<(), &'static str> {
let result = unsafe { bindings::MagickClutImage(self.wand, clut_wand.wand, method) };
match result {
bindings::MagickBooleanType_MagickTrue => Ok(()),
_ => Err("failed to replace colors in the image from color lookup table"),
}
}
pub fn set_size(&self, columns: size_t, rows: size_t) -> Result<(), &'static str> {
let result = unsafe { bindings::MagickSetSize(self.wand, columns, rows) };
match result {
bindings::MagickBooleanType_MagickTrue => Ok(()),
_ => Err("failed to set size of wand"),
}
}
/// Extend the image as defined by the geometry, gravity, and wand background color. Set the /// Extend the image as defined by the geometry, gravity, and wand background color. Set the
/// (x,y) offset of the geometry to move the original wand relative to the extended wand. /// (x,y) offset of the geometry to move the original wand relative to the extended wand.
pub fn extend_image( pub fn extend_image(

View File

@ -319,3 +319,30 @@ fn test_set_background_color() {
assert_eq!(0u8, blob[2]); assert_eq!(0u8, blob[2]);
assert_eq!(0u8, blob[3]); assert_eq!(0u8, blob[3]);
} }
#[test]
fn test_set_size() {
let wand = MagickWand::new();
assert!(wand.set_size(100, 100).is_ok());
}
#[test]
fn test_clut_image() {
START.call_once(|| {
magick_wand_genesis();
});
let wand = MagickWand::new();
assert!(wand.read_image("tests/data/IMG_5745.JPG").is_ok());
let mut gradient = MagickWand::new();
assert!(gradient.set_size(128, 20).is_ok());
assert!(gradient.set_option("gradient:angle", "90").is_ok());
assert!(gradient.read_image("gradient:black-yellow").is_ok());
assert!(wand
.clut_image(
&gradient,
bindings::PixelInterpolateMethod_BilinearInterpolatePixel
)
.is_ok());
}