作为经常处理照片的开发者,RAW 格式转换是绕不开的需求。Adobe 的 DNG Converter 虽然是行业标准,但它闭源、体积大,而且在 Linux 上体验并不好。

今天介绍一个开源替代品——dnglab

项目简介

dnglab 是一个用 Rust 编写的命令行工具,专门用于将各种相机的 RAW 格式转换为 DNG 标准格式。项目目前有 588 stars,虽然不算热门,但代码质量很高,更新也比较活跃。

# 安装
cargo install dnglab

# 基本用法
dnglab convert IMG_0001.CR3 output.dng

核心特性

广泛的相机支持

目前支持 Canon、Nikon、Sony、Fujifilm、Olympus 等主流品牌的 100+ 相机型号,包括最新的无反机型。完整的支持列表可以在项目文档中查看。

Rust 的性能优势

相比基于 Python 或 C++ 的同类工具,dnglab 在转换速度上有明显优势。对于动辄 50MB 以上的 RAW 文件,这一点很关键。

嵌入元数据

转换过程中会完整保留 EXIF、XMP 等元数据,确保后期处理软件能正确读取相机设置和 GPS 信息。

无损转换

使用 DNG 标准格式输出,不压缩原始数据,保证图像质量无损。

实际使用场景

  1. 批处理工作流:配合 findfd 批量转换整个目录的 RAW 文件
  2. 自动化归档:作为脚本的一部分,自动将新导入的照片转为 DNG 入库
  3. 跨平台需求:在 Linux 服务器或 CI 环境中处理 RAW 文件
# 批量转换示例
find ./photos -name "*.CR3" -exec dnglab convert {} ./dng/ \;

项目状态

dnglab 目前处于积极开发阶段,Rust 的内存安全特性让它在处理大文件时更加可靠。项目文档比较完善,对于想深入了解 RAW 格式结构的人来说,代码本身也是很好的学习材料。

如果你正在寻找一个轻量级、跨平台的 RAW 转换方案,dnglab 值得一试。


项目地址:https://github.com/dnglab/dnglab