option to 'attach' xmp file with export (handy for play raw?)

Here is a lua script to copy XPMs and their source RAW files to a destination directory of your choice:

copy_raw_xmp.lua.zip (1.8 KB)

Uncompress somewhere in your CONFIGDIR/lua/contrib/, start darktable, activate it and you are good to go.

  1. Use the file selector to select the desired destination dir (it is saved across runs).
  2. Select the images that you want to export
  3. Click on “Copy selected to target”. All the relevant raw and xmp files will be copied into the target dir.

It works also in the darkroom, in which case the selection happens in the filmstrip.

Happy play-rawing :slight_smile:

2 Likes

+1
Rawtherapee does this with its pp3 files and I find it very useful.

3 Likes

So, basically, the proposal here is to change darktable for one particular usecase (playraw)? Where it’s already easy enough to embed the xmp options in the jpeg…

And where the change has no benefit for the program itself or its function: producing an image from a raw file…

2 Likes

I can speak only for myself but I would find this more useful outside of the play raw use case.

I might export several differently edited jpegs and it would big QoL improvement if the xmp that was used to create that jpeg would be automatically available and easily recognisable.

Duplicate manager or copying xmp files over require manual work. JPEG as sidecar is the closest to optimal solution but would require additional (manual) steps if the metadata should be deleted, plus the disadvantages for the play raw use case mentioned earlier.

2 Likes

This would be semantically opaque and a source of confusion.

darktable reads an XMP with the same basename of an image file as “these are the edits to be applied to this file”.

In this case, the XMP would describe the edits that, applied to some other file, produced this file.

If you were to re-import the exported JPGs in darktable (and maybe other programs as well) they would find the XMP and read it as edits to be applied on top of the JPG.

1 Like

I feel the use-cases you are describing are not super wide-spread and wouldn’t be too optimistic that you’ll find a dev willing to implement this.

But why not go at it with lua scripting? I think that should be possible. Maybe have some help from AI. Maybe make the whole thing a shortcut, set it to a key and bobs your uncle.

See @masterpiga 's post below.

@mino did you see my post above? It includes a lua script to export RAW and XMPs to a target dir from both the lighttable and the darkroom.

1 Like

This doesnt do what the op wanted though - the idea was to have a rendered jpeg + the xmp containing the edits, not the raw file.

semantics → language? → ??

This is wrong. My suggestion for exporting is to end up with a jpeg and xmp called e.g.
Test.jpg and Test.xmp

If you import the jpeg into DT, it’s looking for
Test.jpg.xmp

@mino , lots of things in DT are not super widely used. How many people have used the Blurs module this year?

You can already easily export the jpg with darktable. I did not want to replicate that as you already have all the control in the export module. Just export the XMP and the RAW with the lua script into the same dir. If you want to initiate a play raw you need all three of them, if you just want to participate you can ignore the RAW.

And you can easily get the raw+xmp copied to a different folder with the actions on selection - copy command.

I see what you mean but I don’t fully agree. This works fine in Rawtherapee with pp3 files. Only problem I see is with other programs that use xmp sidecars but those programs shouldn’t use Darktable processing metadata?

And the confusion could be solved by naming xmp sidecars with something like _export suffix, at least partially.

Other option would be to create new (unique) duplicates with every export but it comes with it’s own problems.

Well there’s at least few users voicing positive opinions here. But I agree that scripting is probably the way. I’ve somewhat familiar with lua but haven’t looked at Darktable scripting yet.

What is the confusion here?

I am joining back into the conversation after a lot of back and forth, so forgive me if I am asking something that has already been answered.

Other than playraw stuff, the main usecase for this feature is just to be able to have copies of your xmp files next to the exported jpegs, in a location other than your raws right?
If so, would this mainly be for:

  1. Record keeping (almost like external snapshots of edits)?
  2. Sharing with others outside of playraw (like so that other people can see an example of what the xmp edit does, but without access to the raw)?

I think in the first case, I don’t know why you wouldn’t just use the xmp that sits next to the raw (all in one place).

In the second case, if you are not sharing the raw, then it makes very little sense to include the xmp. A more human-readable edit-capture file would be of more use (I am imagining a .md file that clearly lays out the parts of the edit that are not specific to the original raw image).

1 Like

I did use blurs ….day before yesterday…

But on topic, never thought this would stirr up so much. I agree with a simple lua script doing the action. Even if it is just a copy of the XMP without name change

What @Masterpiga mentioned in his original message. XMP and image file should match, e.g. these edits (image.XMP) are meant for this photo (image.ext). With the export XMP this breaks, xmp is not meant for the exported jpeg.

Like I said I understand this logic and the possible confusion, but I also think there’s room for exception for this case.

I can try to share my reasoning. There’s two big reasons why I find this whole feature useful.

  1. Automation. When I export I want to save the edits automatically so that I can reproduce my edits if necessary. XMP written next to exported file is not necessary for this but for me there’s additional advantages if it is.
  2. Backtracking. If the edits are stored next to raw/original file, there needs to be some way to match the exported file to a specific edit, for example store path of the exported file with duplicate. In my opinion this is more complicated and breaks when exported file is moved. I use Digikam to manage my catalog and Digikam keeps sidecars automatically with the image files. With xmp alongside the exported file everything works even if the exported file is moved, Digikam keeps xmp with the image file and all I need to do is to locate the original file if necessary.

No! I have raw jpeg and xmp all in one folder.

The question is, how do I preserve the edit, the recipe. I don’t use the jpeg to store the edit, I think that’s wrong. I don’t rely on the database for long-term security and I don’t bother to set up tags or ratings. I have date-based folders for my files, and when I’ve finished with a folder for the time being, I delete it all from DT. But I have the raw, a usefully named jpeg and a usefully named xmp in my folder, backed up.

If I just have the default xmp, I’ll try something down the line and then that’s my edit gone! Or I delete an image having not done a proper export - edit lost. The simple and obvious workflow to me is export when happy with it, with a meaningful name, and save a copy of the xmp with the same name. Choosing to have the additional xmp just seems obvious functionality to me. I appreciate others won’t need this facility.

2 Likes

Try it and see! I’m pretty sure you are wrong. The edits related to “image.ext” belong in “image.ext.xmp” as I said earlier.

When importing an image, darktable automatically checks if it is accompanied by a sidecar file. As well as looking for files named <basename>.<extension>.xmp and <basename>_<number>.<extension>.xmp (darktable’s XMP file naming formats) darktable also checks for the presence of a file in the form <basename>.xmp (the naming format for Lightroom’s XMP sidecar files). Files with the latter naming format will be read by darktable but will not be written to. Once the image has been imported, darktable will generate an additional XMP file using its own naming convention.

From documentation.

This! And especially the bolded part, and after that the xmp file should be automatically created.

But you can already embed the xmp in the jpg, so what’s the added value of having a separte file if the goal is “remember the edits that I used for this result”?

2 Likes