Initial generated bindings and basic API
This commit is contained in:
35
README.md
Normal file
35
README.md
Normal file
@ -0,0 +1,35 @@
|
||||
# magick-rust
|
||||
|
||||
A "safe" Rust interface to the [ImageMagick](http://www.imagemagick.org/) system, in particular, the MagickWand library. The *safe* is in scarequotes because honestly nearly everything is little more than calls into a C library with `unsafe` wrapped around it.
|
||||
|
||||
## TODO
|
||||
|
||||
1. ~~Use rust-bindgen to generate Rust bindings.~~
|
||||
1. ~~Add a license and copyright headers~~
|
||||
1. Develop Rustic wrappers to the MagickWand library.
|
||||
* Old Rust bindings: https://github.com/influenza/wand-of-rust
|
||||
* Wand API: http://www.imagemagick.org/script/magick-wand.php
|
||||
1. Write unit tests
|
||||
1. Test it on lots of images in batches to stress test it; should not crash
|
||||
|
||||
## Building the Bindings
|
||||
|
||||
To build the ImageMagick bindings, we use [rust-bindgen](https://github.com/crabtw/rust-bindgen), which reads the C header files and produces a suitable wrapper in Rust.
|
||||
|
||||
This example is using the [Homebrew](http://brew.sh) installed version of ImageMagick, and the LLVM compiler suite provided in the Command Line Tools from Apple. The only real difference for Mac OS X is the `DYLD_LIBRARY_PATH` that is needed to work around [issue #89](https://github.com/crabtw/rust-bindgen/issues/89) in rust-bindgen. Otherwise, the same basic steps should work on any Rust-supported system.
|
||||
|
||||
```
|
||||
$ git clone https://github.com/crabtw/rust-bindgen.git
|
||||
$ cd rust-bindgen
|
||||
$ cargo build
|
||||
$ echo '#include <wand/MagickWand.h>' > ~/gen.h
|
||||
$ DYLD_LIBRARY_PATH=/Library/Developer/CommandLineTools/usr/lib \
|
||||
./target/debug/bindgen \
|
||||
`MagickWand-config --cflags` \
|
||||
-builtins \
|
||||
-o ~/bindings.rs \
|
||||
`MagickWand-config --ldflags` \
|
||||
~/gen.h
|
||||
```
|
||||
|
||||
Then copy the `~/bindings.rs` file into the `src` directory of this project, and rebuild everything. Hopefully it still works.
|
||||
Reference in New Issue
Block a user