Camera RAW to DNG file format converter

Overview

DNGLab - A camera RAW to DNG file format converter

CI Matrix

Command line tool to convert camera RAW files to Digital Negative Format (DNG).

It is currently in alpha state, so don't expect a polished and bugfree application. Please report bugs in our issue tracker.

Examples

Convert a single file:

dnglab convert IMG_1234.CR3 IMG_1234.DNG

Convert whole directory:

dnglab convert ~/DCIM/100EOS ~/filmrolls/photos-france

Supported cameras and file formats

For a list of supported cameras please see SUPPORTED_CAMERAS.md.

Supported raw file formats

Format Supported Remarks
CR3 Yes CR3_STATE.md
CR2 No planned
CRW No

Supported DNG features

  • DNG lossless compression (LJPEG-92)

Command line help

convert subcommand

dnglab-convert
Convert raw image(s) into dng format

USAGE:
    dnglab convert [FLAGS] [OPTIONS] <INPUT> <OUTPUT>

FLAGS:
    -d                 Sets the level of debugging information
    -h, --help         Prints help information
    -f, --override     Override existing files
    -r, --recursive    Process input directory recursive
    -V, --version      Prints version information
    -v, --verbose      Print more messages

OPTIONS:
        --artist <artist>                  Set the artist tag
    -c, --compression <compression>        'lossless' or 'none' [default: lossless]
        --crop <crop>                      Apply crop to ActiveArea [default: yes]
        --dng-embedded <embedded>          Embed the raw file into DNG [default: yes]
        --image-index <index>              Select a specific image index (or 'all') if file is a image container
        --ljpeg92-predictor <predictor>    LJPEG-92 predictor (1-7)
        --dng-preview <preview>            Include a DNG preview image [default: yes]
        --dng-thumbnail <thumbnail>        Include a DNG thumbnail image [default: yes]

ARGS:
    <INPUT>     Input file or directory
    <OUTPUT>    Output file or existing directory

analyze subcommand

dnglab-analyze
Analyze raw image

USAGE:
    dnglab analyze [FLAGS] <FILE>

FLAGS:
    -d               Sets the level of debugging information
    -h, --help       Prints help information
        --json       Format metadata as JSON
        --meta       Write metadata to STDOUT
        --pixel      Write uncompressed pixel data to STDOUT
        --summary    Write summary information for file to STDOUT
    -V, --version    Prints version information
    -v, --verbose    Print more messages
        --yaml       Format metadata as YAML

ARGS:
    <FILE>    Input file

With analyze, you can get a full dump of the internal file structure as YAML or JSON. With JSON output, it's possible to filter and transform the data with jq. For example, to get the cfa_layout from the CMP1 box for CR3 files, you can write:

find /cr3samples/ -type f -name "*.CR3" -exec dnglab analyze --meta '{}' --json \; | \
  jq ". | { file: .file.fileName, cfa_layout: .format.cr3.moov.trak[1].mdia.minf.stbl.stsd.craw.cmp1.cfa_layout}"

The output is:

{
  "file": "Canon EOS 90D_CRAW_ISO_250_nocrop_nodual.CR3",
  "cfa_layout": 1
}
{
  "file": "Canon EOS 90D_CRAW_ISO_100_nocrop_nodual.CR3",
  "cfa_layout": 1
}

extract subcommand

dnglab-extract
Extract embedded original Raw from DNG

USAGE:
    dnglab extract [FLAGS] <INPUT> <OUTPUT>

FLAGS:
    -d                  Sets the level of debugging information
    -h, --help          Prints help information
    -f, --override      Override existing files
    -r, --recursive     Process input directory recursive
        --skipchecks    Skip integrity checks
    -V, --version       Prints version information
    -v, --verbose       Print more messages

ARGS:
    <INPUT>     Input file or directory
    <OUTPUT>    Output file or existing directory

FAQ

Why a DNG tool if there is already something from Adobe?

The DNG converter from Adobe is free (at cost), but not free in terms of free software. Nobody can add or fix camera support except of Adobe. And it has no support for Linux. That's why I've started writing my own little DNG swiss army knife.

Why should I use DNG instead of RAW?

Never ask. If you need DNG you will know.

Will camera/format (...) be added?

Well, depends on developer resources.

Is a GUI in planning?

Yes, DNGLab should get a GUI in near future.

Credits

Special thanks goes to:

Without the support and engagement from these people the development of dnglab would not have been possible.

Comments
  • Canon CRM test media

    Canon CRM test media

    Hi, I shot this batch of Canon R5 test media to help add Canon CRM support to libraw

    dnglab is welcome to use them if it wants :)

    https://www.dropbox.com/sh/ty32q952xdzv3no/AAAIw1t7-ZRqH3TrpQoBfavMa?dl=0

    If the files are too big for regression testing, Canon DPP and be used to extract single raw frames and create smaller CRM files.

    enhancement cr3 
    opened by markreidvfx 18
  • Any plan on Sony ARW file support?

    Any plan on Sony ARW file support?

    Hi, I am looking for a software to convert my Sony camera files into DNG, this project looks good, but it currently does not support ARW. Is there any plan to support it? If example of ARW files is needed, I can provide some. Thanks.

    enhancement 
    opened by AlynxZhou 11
  • Add support for Canon PowerShot SX70 HS

    Add support for Canon PowerShot SX70 HS

    Hello! Thank you so much for this tool! I was really excited to see a way I might be able to bring these CR3 files into Darktable on GNU/Linux, but it seems that dnglab doesn't quite support the camera which created the files. What's involved in adding support for different versions of the PowerShot cameras, and more specifically the SX70 HS?

    I'd be happy to help, if you can provide some guidance.

    Worth noting, I've verified that https://raw.pixls.us/ has images for this camera. If more are needed, I can provide them.

    Output from running

    ~/projects/third-party/dnglab on main at 18:08:04 
    ❯ ./target/release/dnglab convert ~/sharebox/IMG_0694.CR3 test.dng
    thread 'tokio-runtime-worker' panicked at 'called `Result::unwrap()` on an `Err` value: DecoderFail("File is unsupported: Couldn't find camera \"Canon\" \"Canon PowerShot SX70 HS\" mode \"\".\nPlease submit samples at https://raw.pixls.us/")', bin/dnglab/src/dnggen.rs:96:78
    note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
    thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: JoinError::Panic(...)', bin/dnglab/src/dnggen.rs:100:4
    
    help wanted cr3 
    opened by jeaye 7
  • Request for arm64 package release

    Request for arm64 package release

    Could you please include an arm64 build in your releases?! Sheer lack of compiling knowledge is the reason I'm asking ;) BTW I'm thrilled by the project and hope to see it grow! Thanks!

    enhancement 
    opened by embeeweezer 6
  • Option to output multiple DNG's (one for every frame) when converting Canon CRM files (Canon raw cinema format)

    Option to output multiple DNG's (one for every frame) when converting Canon CRM files (Canon raw cinema format)

    This is the first program(as far as I know) that actually can convert canon raw cinema file (CRM) to DNG. Only downside is, I only get (access to) the first frame. When converting a CRM file with DNGlab, I end up with a massive DNG file, slightly bigger in size then the CRM file (for example a 450Mb CRM file becomes a 480Mb DNG file). But when opened in several raw editors, only the first frame is showed, and no way to select a different sub-frame (Rawtherapee has an option for selecting sub frames for files which contain multiple frames, but this options doesn't show up with resulting dng's from DNGlab. So the conversion of CRM to DNG is already working in DNGlab, if it can produce a separate dng for every frame (with suffix of "frame_000000" and counting up, it would be brilliant.

    Why would one convert canon raw CRM file to a DNG sequence ? Well this opens the way to get highlight recovery in Davinci resolve (highlight recovery is available for DNG, but there is no highlight recovery option for CRM files...) Plus there isn't much software that supports CRM files, many raw photo editors have unique options compared to Davinci Resolve.

    In case you need access to CRM files, here's a link to some CRM files. https://drive.google.com/drive/folders/1orh98TR0jyVYRVLGxAnZh7-1_9E3MNF-

    opened by Leevas 5
  • CR2 file not recognized

    CR2 file not recognized

    As soon as I saw the newly added CR2 feature I tried converting a CR2 file. I run into trouble and got the following error:

    dnglab convert -v IMG_9379.CR2 IMG_9379_DNGLAB.dng Creating output directory '' thread 'tokio-runtime-worker' panicked at 'called Result::unwrap() on an Err value: DecoderFail("failed to get decoder: Unsupported("Couldn't find camera \"Canon\" \"Canon EOS 6D\" mode \"\".\nPlease submit samples at https://raw.pixls.us/")")', bin/dnglab/src/dnggen.rs:89:74 note: run with RUST_BACKTRACE=1 environment variable to display a backtrace Status: Failed: '/home/pi/ff/IMG_9379.CR2', Join handle failed: JoinError::Panic(...) Converted 0/1 files, 1 failed: /home/pi/ff/IMG_9379.CR2 Total time: 0.01s

    PS: running with 'RUST_BACKTRACE=1' does not display any other output

    cr2 
    opened by embeeweezer 5
  • Version 0.4.0: thread 'tokio-runtime-worker' panicked at 'called `Option::unwrap()` on a `None` value', bin/dnglab/src/dnggen.rs:144:66

    Version 0.4.0: thread 'tokio-runtime-worker' panicked at 'called `Option::unwrap()` on a `None` value', bin/dnglab/src/dnggen.rs:144:66

    I had problems converting the attached CR3 file. The converted DNG file size is 0 bytes.

    artem@zorrobook:~/report$ RUST_BACKTRACE=full dnglab convert ./IMG_4959.CR3 ./IMG_4959.DNG
    thread 'tokio-runtime-worker' panicked at 'called `Option::unwrap()` on a `None` value', bin/dnglab/src/dnggen.rs:144:66
    stack backtrace:
       0:     0x5613302aca4c - <unknown>
       1:     0x5613302d046c - <unknown>
       2:     0x5613302a5cc5 - <unknown>
       3:     0x5613302ae620 - <unknown>
       4:     0x5613302ae1d5 - <unknown>
       5:     0x5613302aecd4 - <unknown>
       6:     0x5613302ae782 - <unknown>
       7:     0x5613302acef4 - <unknown>
       8:     0x5613302ae719 - <unknown>
       9:     0x56132ffaa9e1 - <unknown>
      10:     0x56132ffaa92d - <unknown>
      11:     0x56132ffe9f44 - <unknown>
      12:     0x56132ffcab4c - <unknown>
      13:     0x56132ffd6a74 - <unknown>
      14:     0x56133004a4d5 - <unknown>
      15:     0x56133000696c - <unknown>
      16:     0x5613300993d5 - <unknown>
      17:     0x56133008d0fe - <unknown>
      18:     0x5613300abfd8 - <unknown>
      19:     0x5613302b2c53 - <unknown>
      20:     0x7f237cb465c2 - start_thread
      21:     0x7f237cbcb584 - __clone
      22:                0x0 - <unknown>
    Converted 0/1 files, 1 failed:
       /home/artem/Pictures/raw academy/report/IMG_4959.CR3
    Total time: 0.73s
    
    

    The previous version (0.3.1) produced the usable result, despite lacking support for Canon EF-S 17-55mm f/2.8 IS USM Lens (see #108).

    Here is a link to the CR3 file

    For some reason Github did not want to accept my CR3 file upload, nor a zip file which included it.

    bug 
    opened by arbv 4
  • Add missing lenses

    Add missing lenses

    Missing Lenses: Sigma 18-300mm F3.5-6.3 DC MACRO OS HSM | Contemporary 014 Canon EF-S24mm f/2.8 STM

    I don't know enough rust to find an answer, but what is the purpose of the toml table full of lenses? Why not just copy the information from existing exif data? Are the other parameters used somewhere I haven't seen in the code?

    opened by pfjason 4
  • Lens names are not consistent between in camera CR3 and JPG files and converted DNG files

    Lens names are not consistent between in camera CR3 and JPG files and converted DNG files

    The lens names in converted DNGs are not the same as in-camera files (both CR3s and JPGs). That imposes compatibility issues between tools, relying on metadata for detecting proper lens correction profile (LCP).

    I have used dnglab executable built straight out of the current master branch.

    In particular, in the case of Canon EF-S 17-55mm f/2.8 IS USM:

    • the lens is named as EF-S17-55mm f/2.8 IS USM in JPGs and CR3 files' metadata (Lens maker is not defined);
    • the lens is named as EF-S 17-55mm f/2.8 IS USM in converted DNG files (Lens maker is defined as Canon).

    When files are being converted with Adobe RAW Convereter, such a problem does not arise.

    That is a big compatibility issue in the long run, which is better to be fixed ASAP, while software is in the alpha state. Such an incompatibility defeats the purpose of using DNG, which is a RAW format intended for archival purposes.

    The tool should not modify the original lens names, nor add the tags non-present in the original files (e.g. Lens Maker)

    Example files can be downloaded using the following link. The archive contains CR3, in camera JPG, and a DNG file.

    opened by arbv 3
  • Add EF100-400mm L II and Tamron 90mm macro lenses

    Add EF100-400mm L II and Tamron 90mm macro lenses

    Hello, and thanks for a fantastic tool. I've added some lens definitions for lenses I use. The "key" is taken from the error notice of dnglab, and confirmed to match the "lens model" field from exiv2 -pa and exiftool (example below).

    I'm unable to compile DNGlab on debian due to an error (below), so haven't been able to test this change locally. i'm using rust from debian's repos, rustc version 1.48.

    dnglab v0.1.0rc5 output on Canon R5 images with new lenses:

    Unknown lens model: 'TAMRON SP 90mm F/2.8 Di VC USD MACRO1:1 F004'. Please open an issue at https://github.com/dnglab/dnglab/issues and provide the RAW file
    Unknown lens model: 'EF100-400mm f/4.5-5.6L IS II USM'. Please open an issue at https://github.com/dnglab/dnglab/issues and provide the RAW file
    Unknown lens model: 'TAMRON SP 90mm F/2.8 Di VC USD MACRO1:1 F004'. Please open an issue at https://github.com/dnglab/dnglab/issues and provide the RAW file
    Unknown lens model: 'EF100-400mm f/4.5-5.6L IS II USM'. Please open an issue at https://github.com/dnglab/dnglab/issues and provide the RAW file
    Unknown lens model: 'TAMRON SP 90mm F/2.8 Di VC USD MACRO1:1 F004'. Please open an issue at https://github.com/dnglab/dnglab/issues and provide the RAW file
    

    EDIT: removed compile error traceback, resolved after updating to latest rustc

    lens-support 
    opened by kdm9 3
  • Support for CR3 CRAW lossy compression

    Support for CR3 CRAW lossy compression

    Hello,

    Latest libraw supports Lossy compressed CR3 https://www.libraw.org/news/libraw-202101-snapshot also ART supports it https://bitbucket.org/agriggio/art/wiki/Home

    Commit https://bitbucket.org/agriggio/art/commits/2663d3e887d5f92c446b4d64010765df3432df4c

    Maybe you can check the code ;)

    Would be great to get this. thanks

    enhancement help wanted cr3 
    opened by neo22s 3
  • Bump prettytable-rs from 0.8.0 to 0.10.0

    Bump prettytable-rs from 0.8.0 to 0.10.0

    Bumps prettytable-rs from 0.8.0 to 0.10.0.

    Release notes

    Sourced from prettytable-rs's releases.

    v0.10.0

    Fixed

    • Fix panic due to incorrect ANSI escape handling #137
    • Fix display of empty tables #127

    Changed

    • Remove the unsafe code in Table::as_ref #146
    • Switch atty to is-terminal #151
    • Minimal Supported Rust Version bumped to 1.56

    Thanks

    v0.9.0

    This release has been updated with latest dependencies versions.

    This crate has been abandonned without notice for quite a while due to some personnal reasons. My apologies for that. I'll try to do my best to continue to maintain it, at least for security updates. If I can't the find time to do it, I'll have no other option than deprecating it, or find new contributors to handover the maintenance to. Feel free to raise your hand if you're interrested. In the meantime, please expect a low update rate, and again please accept my apologies.

    I'll do a pass on opened PRs after summer vacations.

    Changelog

    Sourced from prettytable-rs's changelog.

    0.10.0 (2022-12-27)

    Fixed

    • Fix panic due to incorrect ANSI escape handling (#137)
    • Fix display of empty tables (#127)

    Changed

    • Remove the unsafe code in Table::as_ref (#146)
    • Switch atty to is-terminal (#151)
    • Minimal Supported Rust Version bumped to 1.56

    Thanks

    #127: phsym/prettytable-rs#127 #137: phsym/prettytable-rs#137 #145: phsym/prettytable-rs#145 #146: phsym/prettytable-rs#146 #151: phsym/prettytable-rs#151

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) You can disable automated security fix PRs for this repo from the Security Alerts page.
    dependency 
    opened by dependabot[bot] 0
  • Update prettytable-rs requirement from ^0.9 to ^0.10 in /bin/dnglab

    Update prettytable-rs requirement from ^0.9 to ^0.10 in /bin/dnglab

    Updates the requirements on prettytable-rs to permit the latest version.

    Release notes

    Sourced from prettytable-rs's releases.

    v0.10.0

    Fixed

    • Fix panic due to incorrect ANSI escape handling #137
    • Fix display of empty tables #127

    Changed

    • Remove the unsafe code in Table::as_ref #146
    • Switch atty to is-terminal #151
    • Minimal Supported Rust Version bumped to 1.56

    Thanks

    Changelog

    Sourced from prettytable-rs's changelog.

    0.10.0 (2022-12-27)

    Fixed

    • Fix panic due to incorrect ANSI escape handling (#137)
    • Fix display of empty tables (#127)

    Changed

    • Remove the unsafe code in Table::as_ref (#146)
    • Switch atty to is-terminal (#151)
    • Minimal Supported Rust Version bumped to 1.56

    Thanks

    #127: phsym/prettytable-rs#127 #137: phsym/prettytable-rs#137 #145: phsym/prettytable-rs#145 #146: phsym/prettytable-rs#146 #151: phsym/prettytable-rs#151

    Commits

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependency 
    opened by dependabot[bot] 0
  • Update serde_yaml requirement from 0.8 to 0.9 in /bin/dnglab

    Update serde_yaml requirement from 0.8 to 0.9 in /bin/dnglab

    Updates the requirements on serde_yaml to permit the latest version.

    Release notes

    Sourced from serde_yaml's releases.

    0.9.16

    • Opt out of -Zrustdoc-scrape-examples on docs.rs for now
    Commits
    • e8fbca6 Release 0.9.16
    • 80ad630 Opt out -Zrustdoc-scrape-examples on docs.rs
    • 2d0b7bd Release 0.9.15
    • f542f4b Remove major versions reminder
    • f2deee6 Update build status badge
    • 490b0c3 Time out workflows after 45 minutes
    • dd8e5cc Fix renamed let_underscore_drop lint
    • 8948d36 Release 0.9.14
    • 8d95125 Merge pull request #339 from dtolnay/deserializertaggedvalue
    • 371f764 Implement Deserializer for TaggedValue and &TaggedValue
    • Additional commits viewable in compare view

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependency 
    opened by dependabot[bot] 0
  • Update clap requirement from 3.1.18 to 4.0.32 in /bin/dnglab

    Update clap requirement from 3.1.18 to 4.0.32 in /bin/dnglab

    Updates the requirements on clap to permit the latest version.

    Release notes

    Sourced from clap's releases.

    v4.0.32

    [4.0.32] - 2022-12-22

    Fixes

    • (parser) When overriding required(true), consider args that conflict with its group
    Changelog

    Sourced from clap's changelog.

    [4.0.32] - 2022-12-22

    Fixes

    • (parser) When overriding required(true), consider args that conflict with its group

    [4.0.31] - 2022-12-22

    Performance

    • Speed up parsing when a lot of different flags are present (100 unique flags)

    [4.0.30] - 2022-12-21

    Fixes

    • (error) Improve error for args_conflicts_with_subcommand

    [4.0.29] - 2022-11-29

    [4.0.28] - 2022-11-29

    Fixes

    • Fix wasm support which was broken in 4.0.27

    [4.0.27] - 2022-11-24

    Features

    • Have Arg::value_parser accept Vec<impl Into<PossibleValue>>
    • Implement Display and FromStr for ColorChoice

    Fixes

    • Remove soundness issue by switching from atty to is-terminal

    [4.0.26] - 2022-11-16

    Fixes

    • (error) Fix typos in ContextKind::as_str

    [4.0.25] - 2022-11-15

    Features

    • (error) Report available subcommands when required subcommand is missing

    [4.0.24] - 2022-11-14

    ... (truncated)

    Commits
    • ec4ccf0 chore: Release
    • 13fdb83 docs: Update changelog
    • b877345 Merge pull request #4573 from epage/conflict
    • 85ecb3e fix(parser): Override required when parent group has conflict
    • d145b8b test(parser): Demonstrate required-overload bug
    • 0eccd55 chore: Release
    • 1e37c25 docs: Update changelog
    • dcd5fec Merge pull request #4572 from epage/group
    • dde22e7 style: Update for latest clippy
    • dd8435d perf(parser): Reduce duplicate lookups
    • Additional commits viewable in compare view

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependency 
    opened by dependabot[bot] 0
  • Update multiversion requirement from 0.6 to 0.7 in /rawler

    Update multiversion requirement from 0.6 to 0.7 in /rawler

    Updates the requirements on multiversion to permit the latest version.

    Release notes

    Sourced from multiversion's releases.

    Multiversion 0.7.0

    Changed

    • The multiversion macro has been overhauled. Now uses a single attribute macro, rather than helper attributes.
    • Increased minimum required Rust version to 1.61.0.

    Added

    • The function dispatch method is now selectable, between direct or indirect dispatch, as well as compile-time static dispatch.
    • Added a variety of macros in the multiversion::target module for querying the selected target features.
    • Targets can now be specified by CPU (e.g. x86-64-v2 or skylake).
    • Added option to pass attributes to clones.
    • Added special targets = "simd" option to automatically target all SIMD instruction sets.

    Removed

    • Removed the specialize mode. All targets now specify clones. Specialization should be implemented by querying the selected targets.
    • Removed support for functions that reference self or Self. Previous support was inconsistent and difficult to use correctly.

    Fixed

    • Fixed broken impl Trait support. Using impl Trait in return position now results in an error.
    • Dispatch is now bypassed in scenarios where no targets are specified for the target architecture, or if the first matching target features are known to exist at compile time.
    • Improved performance of direct dispatch.
    • Avoid indirect dispatch in some situations, such as when using retpolines
    Changelog

    Sourced from multiversion's changelog.

    [0.7.0] - 2022-12-09

    Changed

    • The multiversion macro has been overhauled. Now uses a single attribute macro, rather than helper attributes.
    • Increased minimum required Rust version to 1.61.0.

    Added

    • The function dispatch method is now selectable, between direct or indirect dispatch, as well as compile-time static dispatch.
    • Added a variety of macros in the multiversion::target module for querying the selected target features.
    • Targets can now be specified by CPU (e.g. x86-64-v2 or skylake).
    • Added option to pass attributes to clones.
    • Added special targets = "simd" option to automatically target all SIMD instruction sets.

    Removed

    • Removed the specialize mode. All targets now specify clones. Specialization should be implemented by querying the selected targets.
    • Removed support for functions that reference self or Self. Previous support was inconsistent and difficult to use correctly.

    Fixed

    • Fixed broken impl Trait support. Using impl Trait in return position now results in an error.
    • Dispatch is now bypassed in scenarios where no targets are specified for the target architecture, or if the first matching target features are known to exist at compile time.
    • Improved performance of direct dispatch.
    • Avoid indirect dispatch in some situations, such as when using retpolines

    [0.6.1] - 2020-08-18

    Fixed

    • Fixed disallowing some valid architectures, such as "wasm32"

    [0.6.0] - 2020-07-13

    Added

    • Added are_cpu_features_detected macro.
    • Added #[crate_path] helper attribute for renaming/reimporting the crate.

    Changed

    • Changed runtime_dispatch Cargo feature to std
    • Changed static dispatching from the #[static_dispatch] helper attribute to dispatch! helper macro.

    [0.5.1] - 2020-05-29

    Changed

    • Removed dependency on regex and once_cell

    Fixed

    • Fixed bug where #[multiversion] failed to compile when crate was re-exported or renamed.

    [0.5.0] - 2020-04-19

    Added

    • Support for associated functions (including methods).
    • Support for impl Trait.
    • Specification for name mangling.
    • Documentation for #[safe_inner] helper attribute for #[target].

    Removed

    • Removed #[target_clones] attribute (functionality is now included in #[multiversion] attribute).

    Changed

    • #[multiversion] interface now uses helper attributes, providing both target specialization and function cloning.
    • Increased minimum required Rust version to 1.34.0.

    Fixed

    • Vague error spans now point to a more informative source location.

    ... (truncated)

    Commits

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    opened by dependabot[bot] 1
Releases(v0.5.1)
  • v0.5.1(Dec 25, 2022)

    What's Changed

    • Canon EOS R7 support by @cytrinox in https://github.com/dnglab/dnglab/pull/207
    • Update serde_yaml requirement from 0.8 to 0.9 in /bin/dnglab by @dependabot in https://github.com/dnglab/dnglab/pull/214
    • Support for Fujifilm X-H2S by @cytrinox in https://github.com/dnglab/dnglab/pull/217
    • Update criterion requirement from 0.3 to 0.4 in /rawler by @dependabot in https://github.com/dnglab/dnglab/pull/223
    • Update prettytable-rs requirement from ^0.8 to ^0.9 in /bin/dnglab by @dependabot in https://github.com/dnglab/dnglab/pull/216
    • Add installation hints to README.md by @cytrinox in https://github.com/dnglab/dnglab/pull/224
    • Support for OM Digital Solution camera ORF format by @cytrinox in https://github.com/dnglab/dnglab/pull/238
    • Remove invalid dnglab extract argument by @cytrinox in https://github.com/dnglab/dnglab/pull/242
    • OM-1 camera support by @cytrinox in https://github.com/dnglab/dnglab/pull/239
    • Fujifilm X-H2 camera support by @cytrinox in https://github.com/dnglab/dnglab/pull/241
    • Canon RF-S 18-150mm F3.5-6.3 IS STM support by @cytrinox in https://github.com/dnglab/dnglab/pull/261
    • Fujifilm X-T5 support by @cytrinox in https://github.com/dnglab/dnglab/pull/262
    • Sony A7RM5 camera support by @cytrinox in https://github.com/dnglab/dnglab/pull/240
    • Add contribution guide for raw samples by @cytrinox in https://github.com/dnglab/dnglab/pull/264

    Full Changelog: https://github.com/dnglab/dnglab/compare/v0.5.0...v0.5.1

    Source code(tar.gz)
    Source code(zip)
    dnglab-win-x64_v0.5.1.zip(2.52 MB)
    dnglab_0.5.1_amd64.deb(1.98 MB)
    dnglab_0.5.1_arm64.deb(2.74 MB)
    dnglab_linux_aarch64(13.32 MB)
    dnglab_linux_x64(13.37 MB)
  • v0.5.0(Jun 16, 2022)

    What's new

    • Lot more supported file formats
    • Improved DNG output
    • SIMD optimizations

    What's Changed

    • Update image crate to 0.24 by @cytrinox in https://github.com/dnglab/dnglab/pull/115
    • Add criterion for benchmarks by @cytrinox in https://github.com/dnglab/dnglab/pull/116
    • Add SIMD (avx, avx2) optimizations for LJPEG92 encoder by @cytrinox in https://github.com/dnglab/dnglab/pull/117
    • Support for Pentax PEF raw format by @cytrinox in https://github.com/dnglab/dnglab/pull/120
    • Rf100500 ext2 by @cytrinox in https://github.com/dnglab/dnglab/pull/126
    • Move testdata into submodule by @cytrinox in https://github.com/dnglab/dnglab/pull/127
    • Support for Phase One IIQ raw images by @cytrinox in https://github.com/dnglab/dnglab/pull/129
    • Cleanup tiff value cast functions by @cytrinox in https://github.com/dnglab/dnglab/pull/130
    • Code refactoring for more raw formats by @cytrinox in https://github.com/dnglab/dnglab/pull/138
    • Add NEF / Nikon support by @cytrinox in https://github.com/dnglab/dnglab/pull/139
    • Normalize WB coeff values so green is 1.0 for most cases by @cytrinox in https://github.com/dnglab/dnglab/pull/142
    • Add PPG demosaic algorithm by @cytrinox in https://github.com/dnglab/dnglab/pull/145
    • NEF lens support by @cytrinox in https://github.com/dnglab/dnglab/pull/147
    • Assert cleanup by @cytrinox in https://github.com/dnglab/dnglab/pull/148
    • Fix: Add correct crop and active areas for NEF by @cytrinox in https://github.com/dnglab/dnglab/pull/151
    • Support for Nikon Z models by @cytrinox in https://github.com/dnglab/dnglab/pull/152
    • Update uuid requirement from 0.8 to 1.0 in /rawler by @dependabot in https://github.com/dnglab/dnglab/pull/144
    • Fix: LJPEG92 compression adjust_bits() routine by @cytrinox in https://github.com/dnglab/dnglab/pull/155
    • Add DNG support to analyzer by @cytrinox in https://github.com/dnglab/dnglab/pull/154
    • Sony support by @cytrinox in https://github.com/dnglab/dnglab/pull/153
    • Extract previews from Sony ARW by @cytrinox in https://github.com/dnglab/dnglab/pull/158
    • ARRI Alexa support by @cytrinox in https://github.com/dnglab/dnglab/pull/159
    • Epson support by @cytrinox in https://github.com/dnglab/dnglab/pull/162
    • Add missing Epson test modules by @cytrinox in https://github.com/dnglab/dnglab/pull/163
    • Leaf support by @cytrinox in https://github.com/dnglab/dnglab/pull/165
    • Add ARRI Test files by @cytrinox in https://github.com/dnglab/dnglab/pull/160
    • Minolta support by @cytrinox in https://github.com/dnglab/dnglab/pull/166
    • Mamiya support by @cytrinox in https://github.com/dnglab/dnglab/pull/167
    • Add support for Hasselblad cameras by @cytrinox in https://github.com/dnglab/dnglab/pull/169
    • Samsung support by @cytrinox in https://github.com/dnglab/dnglab/pull/170
    • Kodak support by @cytrinox in https://github.com/dnglab/dnglab/pull/172
    • Support for Olympus ORF by @cytrinox in https://github.com/dnglab/dnglab/pull/174
    • Add RW2 raw support by @cytrinox in https://github.com/dnglab/dnglab/pull/178
    • Fujifilm RAF support by @cytrinox in https://github.com/dnglab/dnglab/pull/184
    • Reduce stack usage for CFA to prevent stack overflows by @cytrinox in https://github.com/dnglab/dnglab/pull/185
    • Cleanup the usage of Vec and replace it by PixU16 by @cytrinox in https://github.com/dnglab/dnglab/pull/186
    • Include testdata in repository by @cytrinox in https://github.com/dnglab/dnglab/pull/187
    • Upgrade to Clap 3 by @cytrinox in https://github.com/dnglab/dnglab/pull/190
    • Update dependencies and include Cargo.lock for binary builds by @cytrinox in https://github.com/dnglab/dnglab/pull/191
    • Add missing CR2 and CRW cameras and testdata by @cytrinox in https://github.com/dnglab/dnglab/pull/194
    • Add active_area to RawParams for metadata output by @cytrinox in https://github.com/dnglab/dnglab/pull/196
    • Update docs by @cytrinox in https://github.com/dnglab/dnglab/pull/197
    • CR3: Read active area from metadata by @cytrinox in https://github.com/dnglab/dnglab/pull/195
    • CR3: Add raw, craw and crm modes by @cytrinox in https://github.com/dnglab/dnglab/pull/198
    • Fix: correct ordering of illuminants when writing DNG by @cytrinox in https://github.com/dnglab/dnglab/pull/200
    • CRW: Pass 4-component WB by @cytrinox in https://github.com/dnglab/dnglab/pull/201
    • For SubIFDs, we must ignore the initial sub_tags by @cytrinox in https://github.com/dnglab/dnglab/pull/175
    • Move DNG writer code into rawler lib by @cytrinox in https://github.com/dnglab/dnglab/pull/202
    • Update README.md by @cytrinox in https://github.com/dnglab/dnglab/pull/203
    • Fix --keep-original argument for ftpserver by @cytrinox in https://github.com/dnglab/dnglab/pull/204

    Full Changelog: https://github.com/dnglab/dnglab/compare/v0.4.0...v0.5.0

    Source code(tar.gz)
    Source code(zip)
    dnglab-win-x64_v0.5.0.zip(2.48 MB)
    dnglab_0.5.0_amd64.deb(1.96 MB)
    dnglab_0.5.0_arm64.deb(2.66 MB)
    dnglab_linux_aarch64(12.73 MB)
    dnglab_linux_x64(7.58 MB)
  • v0.4.0(Feb 16, 2022)

    What's Changed

    • Fix: dependabot configuration by @cytrinox in https://github.com/dnglab/dnglab/pull/84
    • Improvement of LJPEG92 encoder and decoder by @cytrinox in https://github.com/dnglab/dnglab/pull/85
    • ftpconv command for embedded ftp server by @cytrinox in https://github.com/dnglab/dnglab/pull/83
    • Update itertools requirement from 0.9 to 0.10 in /rawler by @dependabot in https://github.com/dnglab/dnglab/pull/88
    • CR2 support for RAW, sRAW and mRAW by @cytrinox in https://github.com/dnglab/dnglab/pull/87
    • Update fern requirement from 0.5 to 0.6 in /bin/dnglab by @dependabot in https://github.com/dnglab/dnglab/pull/89
    • Update env_logger requirement from 0.8.4 to 0.9.0 in /rawler by @dependabot in https://github.com/dnglab/dnglab/pull/93
    • Update itertools requirement from 0.9 to 0.10 in /bin/dnglab by @dependabot in https://github.com/dnglab/dnglab/pull/92
    • Update rustc_version requirement from 0.3 to 0.4 in /rawler by @dependabot in https://github.com/dnglab/dnglab/pull/90
    • Update ftp requirement from ^2.2.1 to ^3.0.1 in /embedftp by @dependabot in https://github.com/dnglab/dnglab/pull/95
    • Better handling of crop and active area by @cytrinox in https://github.com/dnglab/dnglab/pull/98
    • Improve BMFF parser for sample size and chunk offsets by @cytrinox in https://github.com/dnglab/dnglab/pull/99
    • Canon CRM Raw Movie file support by @cytrinox in https://github.com/dnglab/dnglab/pull/100
    • Improve clipping during raw2srgb process by @cytrinox in https://github.com/dnglab/dnglab/pull/104
    • CR3: Add focal len from CTMD record 4 to DNG EXIF by @cytrinox in https://github.com/dnglab/dnglab/pull/105
    • Add support for Canon RF 100mm F2.8L Macro IS USM by @cytrinox in https://github.com/dnglab/dnglab/pull/109
    • Add support for Canon RF 100-500mm F4.5-7.1L IS USM by @cytrinox in https://github.com/dnglab/dnglab/pull/110
    • Update tokio-util requirement from 0.6 to 0.7 in /embedftp by @dependabot in https://github.com/dnglab/dnglab/pull/107
    • Add support for EF 16-35mm f/2.8L III USM by @cytrinox in https://github.com/dnglab/dnglab/pull/111
    • Add support for EF 16-35mm f/2.8L USM and Version 2 by @cytrinox in https://github.com/dnglab/dnglab/pull/112
    • Add support for EF-S 17-55mm f/2.8 IS USM by @cytrinox in https://github.com/dnglab/dnglab/pull/114

    Full Changelog: https://github.com/dnglab/dnglab/compare/v0.3.1...v0.4.0

    Source code(tar.gz)
    Source code(zip)
    dnglab-win-x64_v0.4.0.zip(1.63 MB)
    dnglab_0.4.0_amd64.deb(1.32 MB)
    dnglab_0.4.0_arm64.deb(1.94 MB)
    dnglab_linux_aarch64(9.21 MB)
    dnglab_linux_x64(4.53 MB)
  • v0.3.1(Dec 25, 2021)

    What's Changed

    • Fix white level for CR3 files by @cytrinox in https://github.com/dnglab/dnglab/pull/74
    • Fix some warnings in newer Rust versions by @cytrinox in https://github.com/dnglab/dnglab/pull/80
    • Add support for Canon PowerShot SX70 HS by @cytrinox in https://github.com/dnglab/dnglab/pull/79
    • Replace simple_logger with env_logger by @cytrinox in https://github.com/dnglab/dnglab/pull/81

    Full Changelog: https://github.com/dnglab/dnglab/compare/v0.3.0...v0.3.1

    Source code(tar.gz)
    Source code(zip)
    dnglab-win-x64_v0.3.1.zip(1.63 MB)
    dnglab_0.3.1_amd64.deb(1.32 MB)
    dnglab_0.3.1_arm64.deb(1.93 MB)
    dnglab_linux_aarch64(9.18 MB)
    dnglab_linux_x64(4.61 MB)
  • v0.3.0(Nov 11, 2021)

  • v0.2.0(Nov 1, 2021)

    What's Changed

    • Use async/await and tokio crate
    • Fix extract command failed when used with a single file
    • Fix CR3 GPS structure in CMT4 before transfer to DNG
    • Transfer CR3 EXIF Artist and Copyright tags to DNG

    New lenses

    • Canon RF 14-35mm F4L IS USM
    • Canon EF 85mm f/1.8 USM
    • Canon EF 24-85mm f/3.5-4.5 USM
    • Tamron 28-300mm f/3.5-6.3 Di VC PZD
    • Canon EF-S 18-135mm f/3.5-5.6 IS STM
    Source code(tar.gz)
    Source code(zip)
    dnglab-win-x64_v0.2.0.zip(1.64 MB)
    dnglab_0.2.0_amd64.deb(1.33 MB)
    dnglab_0.2.0_arm64.deb(1.91 MB)
    dnglab_linux_aarch64(9.15 MB)
    dnglab_linux_x64(4.63 MB)
  • v0.1.0(Sep 17, 2021)

  • v0.1.0-rc5(Aug 24, 2021)

  • v0.1.0-rc4(Jul 17, 2021)

  • v0.1.0-rc3(Jun 27, 2021)

Owner
null
Artsy pixel image to vector graphics converter

inkdrop inkdrop is an artsy bitmap to vector converter. Command line interface The CLI binary is called inkdrop-cli and reads almost any image bitmap

Matthias Vogelgesang 62 Dec 26, 2022
A Simple Image to Ascii converter in Rust

Image to Ascii A Simple Image to Ascii converter in Rust Brief ?? In my way to learn Rust i decided to make this converter. Challenges ?? new to Rust

WasixXD 7 Sep 16, 2022
A fast wordlist to nthash converter

nthasher A fast wordlist to nthash converter Usage Pass it a UTF8 encoded wordlist, and write the output to a file. ./nthasher <wordlist> > wordlist.n

Dominic White 18 Nov 3, 2022
mico (minimalistic config file format) encoder and decoder

mico This library implements a parser and emitter for mico (minimalistic config file format). Format example: Name: mico Description: minimalistic con

null 1 Jan 30, 2022
A simple command-line utility (and Rust crate!) for converting from a conventional image file (e.g. a PNG file) into a pixel-art version constructed with emoji

EmojiPix This is a simple command-line utility (and Rust crate!) for converting from a conventional image file (e.g. a PNG file) into a pixel-art vers

Michael Milton 22 Dec 6, 2022
🖼️Combines a Javascript and WASM file into a single executable polygot PNG+HTML file.

WASIMAGE Combines a Javascript and WASM file into a single executable polygot PNG+HTML file. Usage: cargo install wasimage wasimage --wasm-file my.was

Nervive 2 Mar 30, 2022
Convert and save photomode screenshots from Red Dead Redemption 2 to JPEG format.

RDR2 Screenshot converter Convert and save photomode screenshots from Red Dead Redemption 2 to JPEG format. QuickStart Just download the executable fi

Timofey Gelazoniya 12 Sep 29, 2022
Foxtrot is a fast viewer for STEP files, a standard interchange format for mechanical CAD

Foxtrot is a fast viewer for STEP files, a standard interchange format for mechanical CAD. It is an experimental project built from the ground up, including new libraries for parsing and triangulation.

null 160 Jan 3, 2023
Rust port of the Quite Okay Image format

qoi_rs What is this? A pretty boring Rust translation of qoi. Status What's there Encode & Decode works Results agree with the C implementation for al

null 9 Dec 9, 2021
A Rust encoder/decoder for Dominic Szablewski's QOI format for fast, lossless image compression.

QOI - The “Quite OK Image” format This is a Rust encoder and decoder for Dominic Szablewski's QOI format for fast, lossless image compression. See the

Chevy Ray Johnston 62 Nov 29, 2022
Rust library to get image size and format without loading/decoding

imageinfo-rs Rust library to get image size and format without loading/decoding. The imageinfo don't get image format by file ext name, but infer by f

xiaozhuai, Weihang Ding 47 Dec 30, 2022
Fast encoder/decoder for the lossless DTM 16 bit image format

DTM Image Format Fast encoder/decoder for the DTM image format. The DTM image format is a 16-bit lossless image format supporting one to four channels

Kurt Kühnert 4 Oct 15, 2022
CLI and utilities for converting media files (images/videos) to ascii outputs (output media file or print to console)

CLI and utilities for converting media files (images/videos) to ascii outputs (output media file or print to console). Supports most standard image formats, and some video formats.

Michael 30 Jan 1, 2023
Add image watermark for multiple file (jpeg, jpg, png, tiff, bmp,etc)

Rust image watermark Add image watermark CLI program for multiple image format (jpeg, jpg, png, tiff, bmp, etc.) manipulation, browser WASM build supp

Johnathan 5 Jan 20, 2023
Pure rust library for reading / writing DNG files providing access to the raw data in a zero-copy friendly way.

DNG-rs   A pure rust library for reading / writing DNG files providing access to the raw data in a zero-copy friendly way. Also containing code for re

apertus° - open source cinema 4 Dec 1, 2022
Raw C Shell: interact with your operating system using raw C code, because why not?

rcsh Raw C Shell is a minimalist shell with no built in commands. You write entirely in C code and use return; to execute your code. Unlike that silly

null 4 Feb 7, 2023
An intel PT trace converter from `perf.data` to Fuchsia trace format.

Introduction Recent Intel processors feature the "Intel Processor Trace" feature, which can be used to capture the full execution trace of a program.

Michał Chojnowski 14 Nov 9, 2022
Tight Model format is a lossy 3D model format focused on reducing file size as much as posible without decreasing visual quality of the viewed model or read speeds.

What is Tight Model Format The main goal of the tmf project is to provide a way to save 3D game assets compressed in such a way, that there are no not

null 59 Mar 6, 2023
Single File Assets is a file storage format for images

SFA (Rust) Single File Assets is a file storage format for images. The packed images are not guaranteed to be of same format because the format while

null 1 Jan 23, 2022
My own image file format created for fun! Install the "hif_opener.exe" to open hif files. clone the repo and compile to make your own hif file

Why am i creating this? I wanted to create my own image format since I was 12 years old using Windows 7, tryna modify GTA San Andreas. That day, when

hiftie 3 Dec 17, 2023