Migrating from lightroom (one more) Croping and Monochrome

Hi,
I was on Windows 10 and Lightroom 6.0 (last lifetime licence)
I moved to linux mint and Dartktable 4.6.1.

My problem : I have about 100k photos, most of them jpg.
About half converted to grayscale, and quite a few cropt and rotated.
I understand that DT developers aren’t working anymore on the translation of lr xmp to DT xmp so I guess I’ll have to do my best (I tryed, and yes if the photo was cropped => import shows unusable bunch of pixel i’d have to remove the crop step from history).

I also understand I’ll never get my edits similar unless I export all my edited photos to a lossless format with LR and that is not an option.
But, I’d like to try my best to get back

  • crop and rotation (DT use to manage but it is deprecated since 3.8)
  • monochrome of some sort (I won’t select 40k photos to apply a style if i can avoid it).

To get the crop and rotation what I tested on a few photos :
I installed DT 3.6.1 on windows (still have access) imported the photos on DT [=> crop params are ok, exposure not as good as the test i did with DT 4.6.1. Copyied the DT xmp portions

      darktable:num="3"
      darktable:operation="flip"
...   darktable:blendop_params="gz12eJxjYIAACQYYOOHEgAZY0QVwggZ7CB6pfOqC/0AAogFpBh0E"/>
     <rdf:li
      darktable:num="4"
      darktable:operation="clipping"
      darktable:enabled="1"
      darktable:modversion="5"
darktable:params="0000008096095f3e00000000a1f8613f0000803f0000000000000000cdcc4c3ecdcc4c3ecdcc4c3fcdcc4c3ecdcc4c3fcdcc4c3fcdcc4c3ecdcc4c3f00000000000000000000000000000000fefffffffeffffff"
...      darktable:blendop_params="gz12eJxjYIAACQYYOOHEgAZY0QVwggZ7CB6pfOqC/0AAogFpBh0E"/>
     <rdf:li

pasted them into the xmp generated by linux DT 4.6 reload (reloading newer xmp)… done. and it worked.

So if there are no better ideas, I’ll script that, test on some more pics and give it a go : import photos on linux DT, overide the crop xmp with data from the xmp by DT 3.6.1 and reimport.
it’ll take a while but still much less that redo every crops.
any quickwin I’d miss?

For the converttograyscale : should i do something similar or is there a better way ?

  • a trick in LR xmp that will force DT to desaturate ?
  • a script with darktable-cli to apply some preset (but I understand darktable-cli is for export not editing) ?
  • a lua script that would read a file list and apply some styling to them ?

thanks for any idea / help.
(and no, I won’t do wine + LR)

1 Like

Welcome here @PierreP ,

I came over from Win + LR over too, about one and a half year back. Though dt is not perfect - as no software is - I’m truly happy!

Though I did a fair amount of redevelopment of older pictures in dt I think it to be a good idea to basically leave them as is and make a decent export of the last development state from LR.

If you use dt as your main lookup for pictures then it may be good to import those exported developments (as well?).

I do hope this makes sense for your situation. It is quite some work otherwise and as far as I know there is no good way of automating it.

For your information: I did a lot of redevelopment as I felt a lot of pictures could be done better in dt then I did in LR…

Kind regards, Jetze

By the way, dt version now is 5.4.1. This means you miss out a lot of goodies using an older version…

It should be possible to update the crop/rotation migration to use the newer modules (crop, rotate and perspective). Maybe raise a feature request on GitHub.

It’s possible to do

There is one, i did a re-up but I can understand that the devs lack time and motivation (and access to LR to test…)

I’d love to see any related existing example :wink:

I really dont understand the problem. You have 100k that from your post I assume are 100% processed in lightroom and maybe exported. If they are not, then go to LR and export them in their final processing.

After that, you can import the original raw into dt. But I dont think you need to go thru and process 100k again in dt to export them. What will you gain from that? If in the future there is one or two very specific images that you like from the past, then go to the darkroom and fully process those images from scratch.

My second comment, I would not recommend linux mint if their version of dt is 4.6.1. That’s close to 5 revisions too old. We are about to release 5.6 in June. I recommend fedora KDE or OpenSuse.

2 Likes

This is of course dodging your question but I would strongly consider exporting jpegs from LR to archive your photos with their respective crop and b/w conversioms and moving on. Just my two cents…

1 Like

Welcome to the forum and DT. I too moved from LR6 to DT. I moved because I found DT a much more fun and creative program. LR was fast and simple to use which was its beauty but also its limitation in my view. I love DT.

My advice with any editing program. I do an edit and I export a 16 Bit Tiff of the edit as archival storage of the edited image which can then be further tweaked in programs like PS and GIMP if required. Also if a JPG is needed I just open the tiff or better still the RAW edit and export a JPG as required for the internet or whatever.

I would suggest if you have done your edits in LR to try and ensure you have an export of your work from LR. Then if you open a new or past image in DT you can start afresh using its range of tools to create a new edit. I don’t understand why it is important for DT to copy the work you have achieved in LR already. I hope I am not missing something here and hopefully some of the answers already given provide the solution you are seeking.

Good luck with DT. It is a steep but fun learning curve.

Let’s say you have a text file named processing.txt in the same directory as your images and the file contains

<image name>,<style name>[,<style name>,<style name>]

then you could have a lua script like

local dt = require "darktable"
local du = require "lib/dtutils"

local MODULE <const> = "apply_processing_styles"

local processing = {}

local function get_processing(image)
  local processing_file = image.path .. "/processing.txt"
  local f = io.open(processing_file, "r")
  if f then
    for line in f:lines() do
      local parts = du.split(line, ",")
      local fname = parts[1]
      table.remove(parts, 1)
      processing[fname] = parts
    end
    f:close()
  end
end

local function find_style(name)
  for _, style in ipairs(dt.styles) do
    if style.name == name then
      return style
    end
  end
  return nil
end

local function process_images(images)
  for _, image in ipairs(images) do
    if processing[image.filename] do
      for _, stylename in ipairs(processing[image.filename]) do
        local style = find_style(name)
        if style then
          image:apply_style(style)
        end
      end
    end
  end
end
 
dt.register_event(MODULE, "shortcut",
  function(event, shortcut)
    get_processing(dt.collection[1])
    process_images(dt.collection)
  end, "apply processing styles"
)

disclaimer - I wrote this in here and didn’t actually try it so there may be typos and syntax errors

1 Like

Thanks a lot for the starting point !

2 Likes

Just for info, I have solved my problem using python scripts.
For monochrome, I apply the darktable operation by copying the xmp part and applying it to a selection of xmp generated by DT, then reload and it’s ok

<rdf:li xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:darktable="http://darktable.sf.net/" xmlns:exif="http://ns.adobe.com/exif/1.0/" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:lr="http://ns.adobe.com/lightroom/1.0/" xmlns:x="adobe:ns:meta/" darktable:num="7" darktable:operation="monochrome" darktable:enabled="1" darktable:modversion="2" darktable:params="ec49b441857d29410000004000000000" darktable:multi_name="" darktable:multi_name_hand_edited="0" darktable:multi_priority="0" darktable:blendop_version="13" darktable:blendop_params="gz10eJxjYGBgYAJiCQYYOOHEgAZY0QWAgBGLGANDgz0Ej1Q+dcF/IADRAG2yHQc="/>
     

For the crop and rotate information, the trick is : lightroom doesn’t put the size of the image in the xmp.

    subprocess.run([
        "exiftool",
        "-overwrite_original",
        "-TagsFromFile", str(chemin),
#        "-Xmp-exif:ExifImageWidth<ImageWidth",
#        "-Xmp-exif:ExifImageHeight<ImageHeight",
        "-Xmp-tiff:ImageWidth<ImageWidth",
        "-Xmp-tiff:ImageHeight<ImageHeight",
        str(fichier_xmp)

By adding the Xmp-tiff (and not the xmp exif) tags with the size to the xmp exctracted by exiftool, It is now recognized ok in Darktable with the deprecated crop and rotate module but I least I can see what i did and if I wan’t I can reproduce with other modules.

I still have to run that on all my collection but I did test on sample pics and it works

Anyway If someone ever fall into the same case this is a workaround

1 Like

You don’t need to stick with version 4.6.1 in Linux Mint, you can either download the latest appimage build of darktable, or install via the OBS page:

https://software.opensuse.org/download.html?project=graphics:darktable&package=darktable

Download the .deb package built for Ubuntu 24.04 based distros.

1 Like