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

Download history 90/week @ 2024-04-28 52/week @ 2024-05-05 100/week @ 2024-05-12 168/week @ 2024-05-19 234/week @ 2024-05-26 103/week @ 2024-06-02 59/week @ 2024-06-09 86/week @ 2024-06-16 37/week @ 2024-06-23 93/week @ 2024-06-30 84/week @ 2024-07-07 175/week @ 2024-07-14 110/week @ 2024-07-21 272/week @ 2024-07-28 109/week @ 2024-08-04 112/week @ 2024-08-11

每月下载量 612
8 crate 中使用 (5 个直接使用)

Apache-2.0

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)。
  • 可选地安装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