| Crates.io | mdloc |
| lib.rs | mdloc |
| version | 0.1.0 |
| created_at | 2025-10-02 08:50:00.95097+00 |
| updated_at | 2025-10-02 08:50:00.95097+00 |
| description | A Rust command-line tool for processing image links in Markdown files. Download remote images and convert them to Base64 embedded format or local file references. |
| homepage | |
| repository | https://github.com/elvisding0307/mdloc |
| max_upload_size | |
| id | 1864050 |
| size | 114,308 |
一个高效的 Rust 命令行工具,用于处理 Markdown 文件中的图片链接。可以将远程图片下载并转换为 Base64 内嵌格式或本地文件引用,让你的 Markdown 文档完全自包含或本地化。
确保你已经安装了 Rust(1.86+):
# 克隆仓库
git clone <repository-url>
cd mdloc
# 编译安装
cargo build --release
# 或者直接运行
cargo run -- --help
# 将图片转换为 Base64 内嵌格式(默认模式)
cargo run -- document.md
# 下载图片到本地文件并更新引用
cargo run -- --non-inline document.md
# 指定输出文件名
cargo run -- -o output.md document.md
# 组合使用
cargo run -- --non-inline -o localized.md document.md
Usage: mdloc [OPTIONS] <MARKDOWN_FILE>
Arguments:
<MARKDOWN_FILE> 要处理的 Markdown 文件路径
Options:
--non-inline 下载图片到本地文件而不是嵌入为 base64 数据 URI
-o, --output <OUTPUT> 输出文件名(默认:在原文件名前添加 "new_" 前缀)
-h, --help 显示帮助信息
将远程图片下载并转换为 Base64 格式,直接嵌入到 Markdown 文件中:
cargo run -- document.md
优点:
缺点:
下载图片到本地 [filename]_images/ 文件夹,并更新 Markdown 中的引用:
cargo run -- --non-inline document.md
优点:
缺点:
项目包含了一个示例文件 examples/test.md,你可以直接测试:
# 测试 Base64 内嵌模式
cargo run -- examples/test.md
# 测试本地文件模式
cargo run -- --non-inline examples/test.md
# 测试文档
这是一个测试文档,包含一些图片链接。


生成 examples/new_test.md,图片被转换为 Base64 格式:


生成 examples/new_test.md 和 examples/test_images/ 文件夹:


src/
├── main.rs # 主程序入口和命令行处理
├── error.rs # 统一错误处理
├── http_client.rs # HTTP 客户端和下载逻辑
├── image_processor.rs # 图片处理和 Base64 转换
├── markdown_processor.rs # Markdown 文件解析和处理
├── mime_utils.rs # MIME 类型工具
└── url_utils.rs # URL 处理工具
程序使用内置的默认配置,包括:
未来版本将支持配置文件自定义这些参数。
Q: 图片下载失败怎么办? A:
Q: 生成的文件很大怎么办? A:
--non-inline 模式生成本地文件引用Q: 程序运行很慢怎么办? A:
Q: 某些图片格式不支持? A:
欢迎提交 Issue 和 Pull Request!
# 克隆仓库
git clone <repository-url>
cd mdloc
# 安装依赖并构建
cargo build
# 运行
cargo run
# 运行示例
cargo run -- examples/test.md
本项目采用 GPL 3.0 许可证 - 查看 LICENSE 文件了解详情。
如果你遇到任何问题或有功能建议,请在 Issues 页面提交。
Made with ❤️ in Rust