Add set_option method.

This is useful for stuff like setting the loop option for a gif.
This commit is contained in:
Pete Gadomski
2016-08-02 12:01:34 -06:00
parent 1dcd0f6933
commit eeb014af1f
2 changed files with 27 additions and 0 deletions

View File

@ -31,6 +31,18 @@ impl MagickWand {
}
}
pub fn set_option(&mut self, key: &str, value: &str) -> Result<(), &'static str> {
let c_key = CString::new(key).unwrap();
let c_value = CString::new(value).unwrap();
let result = unsafe {
bindings::MagickSetOption(self.wand, c_key.as_ptr(), c_value.as_ptr())
};
match result {
bindings::MagickTrue => Ok(()),
_ => Err("failed to set option"),
}
}
pub fn annotate_image(&mut self, drawing_wand: &DrawingWand, x: f64, y: f64, angle: f64, text: &str) -> Result<(), &'static str> {
let c_string = try!(CString::new(text).map_err(|_| "could not convert to cstring"));
match unsafe { bindings::MagickAnnotateImage(self.wand, drawing_wand.wand, x, y, angle, c_string.as_ptr() as *const _) } {

View File

@ -155,3 +155,18 @@ fn test_auto_orient() {
assert!(wand.auto_orient());
assert_eq!(false, wand.requires_orientation());
}
#[test]
fn test_set_option() {
START.call_once(|| {
magick_wand_genesis();
});
let mut wand = MagickWand::new();
assert!(wand.read_image("tests/data/IMG_5745.JPG").is_ok());
// The jpeg:size option is just a hint.
wand.set_option("jpeg:size", "128x128").unwrap();
let blob = wand.write_image_blob("jpeg").unwrap();
assert!(wand.read_image_blob(&blob).is_ok());
assert_eq!(192, wand.get_image_width());
assert_eq!(144, wand.get_image_height());
}