24 个版本 (1 个稳定版本)
使用旧的 Rust 2015
1.0.0 | 2024 年 5 月 25 日 |
---|---|
0.21.0 | 2024 年 4 月 18 日 |
0.20.0 | 2024 年 2 月 26 日 |
0.19.1 | 2023 年 9 月 23 日 |
0.5.2 | 2016 年 7 月 18 日 |
在 图像 中排名 30
每月下载量 612 次
在 8 个 crate 中使用 (5 个直接使用)
205KB
3.5K SLoC
magick-rust
ImageMagick 系统的 Rust 接口,特别是 MagickWand 库,具有一定的安全性。许多 MagickWand API 中的功能仍缺失,但随着时间的推移,将逐渐添加。欢迎提交拉取请求、错误报告和示例请求。
依赖项
由于这个 crate 为 C/C++ 库生成绑定,因此除了安装最新的 Rust 工具链外,还有几个依赖项。
- Rust 稳定版
- ImageMagick (版本 7.0.10-36 到 7.1.x)
- 由于向后不兼容的更改,不与 ImageMagick 6.x 兼容。
- FreeBSD:
sudo pkg install ImageMagick7
- Homebrew:
brew install imagemagick
- Linux 可能需要从源代码构建 ImageMagick,请参阅 INSTALL.md 指南
- Windows: 下载
*-dll
安装程序。在安装时,请勾选 安装 C 和 C++ 的发展头文件和库 复选框。
- Clang (版本 5.0 或更高版本,由 rust-bindgen 规定)
- Windows 需要 MSVC 工具链
- 下载Microsoft C++ Build Tools,并选择适当的架构的
MSVC ... build tools
(最新版本)和Windows 11 SDK
(如果使用Windows 10,则为10
)。
- 下载Microsoft C++ Build Tools,并选择适当的架构的
- 可选地安装
pkg-config
,以方便与ImageMagick链接。或者,您可以在下一节中描述的方式通过环境变量设置链接器参数。
有关详细示例,请参阅INSTALL.md指南,以及有关各种依赖的一些讨论。
构建和测试
在FreeBSD、Linux和macOS上,以下命令应该足够。
$ cargo build
$ cargo test
如果pkg-config
不可用或您希望覆盖其行为,您可以在构建之前设置一个或多个环境变量。build.rs
脚本将获取这些变量并使用它们而不是尝试调用pkg-config
实用程序。
IMAGE_MAGICK_DIR
- ImageMagick的安装路径IMAGE_MAGICK_LIB_DIRS
- 以:
分隔的lib
目录列表IMAGE_MAGICK_INCLUDE_DIRS
- 以:
分隔的include
目录列表IMAGE_MAGICK_LIBS
- 要链接的库列表
在Windows上构建
在Windows上构建时,您需要设置IMAGE_MAGICK_DIR
环境变量,使其指向ImageMagick的安装路径。这可能可以通过set
命令完成,但也可能需要在系统首选项中设置该变量。如果没有设置IMAGE_MAGICK_DIR
,则build.rs
脚本将尝试运行通常在基于Unix的系统上发现的pkg-config
工具。
> set IMAGE_MAGICK_DIR=<path to ImageMagick installation directory>
> cargo build
> cargo test
文档
API文档可在github pages找到,因为docs.rs系统很难构建需要外部库且未包装在"sys"风格库中的任何内容。有关"创建sys crate请求",请参阅问题57。
示例
MagickWand有一些全局状态需要在使用库之前初始化,但幸运的是,Rust通过使用std::sync::Once
类型使处理变得非常简单。请参阅examples
目录中的示例代码,了解该crate的基本用法。
贡献
仍然缺少许多功能,因此如果您发现想看到此库中添加的内容,请随时提交问题。更好的是,fork存储库,并编写必要的薄包装器以公开MagickWand函数。对于获取器和设置器,这通常很容易,只需在wand/magick.rs
中的表中添加一行即可,它将无需额外编码即可工作。测试是可选的,因为此crate基本上是围绕假定已彻底测试的代码的薄包装器。如果您要贡献更改,请随时提交拉取请求。
Docker
Docker 可以用来构建和测试代码,而不会影响您的开发环境,您的开发环境中可能安装了不同版本的 ImageMagick。下面示例中所示的使用 docker compose
是可选的,但它可以使过程变得非常简单。
$ cd docker
$ docker compose build --pull
$ docker compose run magick-rust
$ cargo clean
$ cargo build
$ cargo test
依赖项
~0–1.9MB
~38K SLoC