DNGLab - a camera RAW to DNG file format converter (with CR3 support) for Linux and other platforms

Hi there,

I want to announce my small project. It’s a raw to dng file format converter, written in Rust.

It currently supports only CR3 raw files (ironic, I know), because that is what I need most. But I want to add as many other formats as possible. It’s in alpha stage, so don’t expect a bug-free ready-to-use application, but for those of us dealing with CR3 raw files it may already help :slight_smile:. You have to build it from source, there are no binary packages yet.

All Canon cameras with CR3 format are supported (R, RP, R5, M50, …) except of CRAW (compressed RAW) files. For a general state of CR3 support please have a look at dnglab/CR3_STATE.md at main · dnglab/dnglab · GitHub.

I would be happy if I receive some feedback so I can priorize the next changes/features, as all my urgent wanted features are now implemented.

One big thing currently missing is EXIF lens detection, but that is number #1 on my todo list :wink:

11 Likes

great job Daniel, but…

how do I compile that? there’s no makefile?.. I’m not an expert but usually when I have a makefile I simply run make and that is all…

Looks like it’s using Cargo - Hello, Cargo! - The Rust Programming Language

You need to setup Rust (with https://rustup.rs/ for example), then you can build with cargo build --release.

Maybe I can add *.deb packages and/or static builds to github, need to figure out how these github workflows needs to be configured.

2 Likes

that would be nice!

This project might go big. Afaik this is the first foss dng converter out there and it has that rusty coolness. Great job!

3 Likes

Autobuilds for releases should work now. I’ve added a debian and windows package at Releases · dnglab/dnglab · GitHub
Hope this works. It’s alpha-ware, folks :wink:

1 Like

I remember DNG conversion beeing added to digiKam way back. I see now it was in 2008. I have never used digiKam though. Could someone confirm whether it’s still there and works?

Hi Daniel, great to see you activating the autobuild however I have a problem when trying to install the .deb package:

(base) 17:20:41 aadm@psion:~/Downloads$ sudo dpkg -i dnglab_v0.1.0-alpha1_amd64.deb 
dpkg: error processing archive dnglab_v0.1.0-alpha1_amd64.deb (--install):
 parsing file '/var/lib/dpkg/tmp.ci/control' near line 2 package 'dnglab':
 'Version' field value 'v0.1.0-alpha1': version number does not start with digit
Errors were encountered while processing:
 dnglab_v0.1.0-alpha1_amd64.deb

This is the error when using apt instead (I’m adding this in case it gives some extra information that may be useful for you):

(base) 17:26:12 aadm@psion:~/Downloads$ sudo apt install ./dnglab_v0.1.0-alpha1_amd64.deb 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Note, selecting 'dnglab' instead of './dnglab_v0.1.0-alpha1_amd64.deb'
The following NEW packages will be installed:
  dnglab
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B/884 kB of archives.
After this operation, 2.793 kB of additional disk space will be used.
Get:1 /home/aadm/Downloads/dnglab_v0.1.0-alpha1_amd64.deb dnglab amd64 v0.1.0-alpha1 [884 kB]
dpkg: error processing archive /home/aadm/Downloads/dnglab_v0.1.0-alpha1_amd64.deb (--unpack):
 parsing file '/var/lib/dpkg/tmp.ci/control' near line 2 package 'dnglab':
 'Version' field value 'v0.1.0-alpha1': version number does not start with digit
Errors were encountered while processing:
 /home/aadm/Downloads/dnglab_v0.1.0-alpha1_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)

(I’m on Ubuntu 20.10)

Oops, introduced a wrong version code on the last step.
I’ve updated the workflow, the deb is now working on my test machine: Release v0.1.0-rc1 · dnglab/dnglab · GitHub

1 Like

Excellent! It now works!

@cytrinox

Daniel, the executable now works but I have found a few problems in some of the CR3 I’ve converted. Darktable does not recognize some of the converted dngs, while the conversion via Adobe dng converter works fine.

If you want to check this out I’ve put here one example: the original cr3 plus the two converted dng (the one via dnglab is the larger one, ~65 Mb with .DNG as suffix; the one converted with Adobe is ~28 Mb and suffix .dng):

1 Like

Should be fixed in Release v0.1.0-rc2 · dnglab/dnglab · GitHub

Some internal overflow in LJPEG encoder…

1 Like

Great! following in github :wink:

Hey Daniel,

you made my day, :upside_down_face:
Thanks for sharing your work with us!

I just got my new EOS and realized: I 'll have to adjust my workflow “a little bit” because of the new raw format Canon introduced :triumph: It seems that your “little” project is the only option for me converting cr3 to dng on linux since the latest version of the Adobe converter doesn’t play along with wine at the moment. :thinking:

I successfully tried your converter yesterday and it run trough smoothly.
I loaded the resulting dngs (with various flags set) and the original cr3 to rawtherapee and noticed huge differences between the color histograms - Should that be this way?

Tone curve applied differently…are you using the default auto match??

You refer to the Processing Profiles in RawTherapee?

I compared the cr3 raw with 2 dngs converted from the raw, each with different flags set in DNGLab.
The RGB histograms show slight but recognizable differences. :thinking: I don’t think they are originated by simple shifting or warping of the curves, because the peaks or low points are set at different parts of the curve (but i could be wrong of course due to my little experience with RT :upside_down_face: :shushing_face:).

I also tried different Processing Profiles one after another and cursory compared the settings for tone mapping / color curves, etc. every time. I couldn’t find any different values.

AuntEdithSaid:
The question is, if this observed behavior is a result of the conversion process or is it originated in my RT settings.

I think I saw someone make it work recently, search the forum…