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。
贡献
你可以通过以下方式提供帮助:
- 资助本项目,以便我们能够推进
wondermagick和 Rust [image库。 - 为
wondermagick所依赖的库做出贡献。 - 在
wondermagick中实现更多imagemagick命令。有关代码贡献的详细信息,请参阅 CONTRIBUTING.md。 - 为您喜爱的语言创建 Rust [
image绑定。为其他内存不安全的系统创建可直接替换的方案。并非整个世界都运行在imagemagick上。
相关工作
工具
- oxipng:内存安全的 PNG 优化器。类似于
pngcrush,但得益于多线程,速度更快。 - gifski:创建每帧包含数千种颜色的高效 GIF 动画
- cavif-rs:将图像转换为 AVIF。可以读取 PNG 和 JPEG。
库
特别致谢
本项目受益于 Sovereign Tech Agency 的投资。91% 的资金分配给了 image-rs 及其图像格式实现,使其能够在 GNOME 和 Chromium 中采用,而 9% 的资金分配给了 wondermagick 及其缺失的 image-rs 功能。