ITADN
Shnatsel/wondermagick
Shnatsel/wondermagick · 文件 下载 ZIP
文件最后提交记录最后更新时间
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈

Wondermagick

一个内存安全的 imagemagick 直接替换方案。它同样 非常快

为什么?

图像处理中的漏洞是灾难性的,因为图像处理 无处不在。 在所有软件中,内存安全漏洞的占比 高达 70%,而在图像操作中这一比例甚至更高:二进制格式解析以这类漏洞而闻名。

这并非理论上的担忧。每个 C 语言图像解析库都有严重的内存安全漏洞历史。Imagemagick 本身就有 更多。而且它们正在 被实际利用

试图保护庞大的内存不安全代码库是 不可持续的,但迁移到内存安全语言 是有效的

得益于 Rust,我们现在可以一劳永逸地根除这些漏洞,同时不牺牲性能!

当前状态

底层的图像格式解码器和编码器已经非常成熟。Rust 社区多年来一直在开发它们并在生产环境中使用。它们已在数百万张真实图像上进行了测试。

wondermagick 本身仍然年轻。我们目前专注于 convert 二进制文件,用于转换和调整图像大小,这是 imagemagick 最常见的工作负载。

请参阅 Cargo.toml 中的 [features] 部分以获取支持的图像格式列表,以及 wm-convert --help 以获取支持的操作列表。

不支持 libmagick C API。

贡献

你可以通过以下方式提供帮助:

  1. 资助本项目,以便我们能够推进 wondermagick 和 Rust [image 库。
  2. wondermagick 所依赖的库做出贡献。
  3. wondermagick 中实现更多 imagemagick 命令。有关代码贡献的详细信息,请参阅 CONTRIBUTING.md
  4. 为您喜爱的语言创建 Rust [image 绑定。为其他内存不安全的系统创建可直接替换的方案。并非整个世界都运行在 imagemagick 上。

相关工作

工具

  • oxipng:内存安全的 PNG 优化器。类似于 pngcrush,但得益于多线程,速度更快。
  • gifski:创建每帧包含数千种颜色的高效 GIF 动画
  • cavif-rs:将图像转换为 AVIF。可以读取 PNG 和 JPEG。

  • image-rs:为 wondermagick 完成所有繁重的工作。
  • WUFFS:编译为 C 的内存安全图像解码器。不支持图像编码或调整大小等操作。如果您无法采用 Rust,至少请使用这些。

特别致谢

本项目受益于 Sovereign Tech Agency投资。91% 的资金分配给了 image-rs 及其图像格式实现,使其能够在 GNOME 和 Chromium 中采用,而 9% 的资金分配给了 wondermagick 及其缺失的 image-rs 功能。