Copying masks between images

Maybe its because I am using the latest dev version 3.5, but copying the history stack from one picture to another no longer copies masks.

Is there some setting I have updated/failed to update?

This is a bit of a pain for bird photography as I often create a mask based on the outline of the bird in shot. With half a dozen pictures in quick succession, if the bird doesnt move much, I can copy all my processing from one picture to the others, and quickly see which was the best image.

Actually I just noticed that sometimes masks are being copied, but not often, and not as a result of anything obvious that I have done.

As a workaround, you can load the sidecar of one image into the history stack of another (of course, that will copy everything, and it’s surely more time-consuming than a copy-paste operation). Consider opening a bug for this.

Quite often the masks do not show until one touches the sliders … make sure that this is not your problem … my masks do correctly move with ^C > ^V directly off the image.
I am using the daily git

I tried playing around with a dozen images. - ctr-C and ctrl-V didnt make any difference, and no created shapes appeared when I played with sliders.

I hesitate to file a bug as I have tinkered with the build in to try to get EOS R6 support

I do the same thing with my bird pics as well. I was able to copy and paste masks without issue with last night’s build.

If click the active module summary you can see which modules have masks applied. Did you see instances where a mask failed to paste over?

Not sure what you mean by clicking the active module summary.

Here is what I do with a sequence of bird shots, taken in rapid succession ie the bird doesnt have time to move much so history and masks should apply to the whole sequence quite effectively:

  1. Open the first image in Darkroom and use various modules to get the best view of the bird. Often I will use a brush to outline the bird and create a mask, and then apply modules like local contrast and colorbalancergb to the masked area.

  2. Now I can look at my left panel and see the mask manager where grp local contrast and brush 1 have appeared. Also, if I hover on the history tab over the entry for local contrast, it has “a mask was added” at the bottom of the list of changes

  3. Click CTRL-C to copy the history

3.Click on the next image in the photo strip at the bottom of the screen

  1. Click CTRL-V to paste the history onto the second image

  2. Now we have the error - hovering over local contrast in the history tab shows “a mask was added” at the bottom of the list of changes, but the tab for created shapes is empty.

I tried this a few times to be sure, and then to avoid confusion I added turned on lens correction before copying - so that I could easily check that CTRL-V was working. It turned out that CTRL-V did not actually copy over the lens correction step!!

At this point I tried a CTRL-Shift-V selective paste, and that worked perfectly, pasting the masks and the extra lens correction step.

Given that CTRL-V works for you in the nightly build, I guess its something in my config. I have added the cytrinox rawspeed fork to get .CR3 support - maybe that’s causing it.

OK … try this. When the image is full screen and after processing with a mask do the ^C thing and then simply hit the space-bar to move to the next image (do not mess with the ‘bottom strip’.
Now try the ^V

He means the tab that shows the modules in the actual order they are applied from bottom to top…Circular icon usually 1st or second group in depending on your configuration…
image

1 Like

Sometimes it can also help to compress your history before you copy it…no sense copying any extra information and this should trigger an update so that the information pasted will be current and updated for sure…

@Aliks, what @priort said. The tab showing active modules provides the modules invoked as well as which ones have masks enabled. Here’s a photo of a tree frog that I worked on yesterday:

Under the menu on the right shows the modules being used and also indicates that I have a second instance of the exposure module activated with a mask. If I click on that mask icon:

You now see the mask enabled. In this case I drew an ellipse for a vignette effect.

Now, if you CTRL-C to copy the history and then CTRL-V to paste it into another photo, you should be able to go to that tab to verify that the mask was enabled. My hands aren’t as steady as I would like, so I may have to go in to the module and re-center the ellipse to get the effect right.

Thanks all - I’ve used Darktable for years, but there are always little tricks to learn.
I didn’t know that space bar advanced to the next photo, and I hadn’t realised what the mask icon meant.

Anyway, no matter how I apply it, whether using space bar to move to next image, and clicking CTRL-V or going up to the lighttable and selecting “paste”, it does the following:

On the target image, the mask icon appears, but the shape is not copied across so the entire screen is masked.

If I do CTRL-Shift-V then everything is copied correctly.

1 Like

More important than anything is that you are able to make it work … bravo!
Probably a difference of systems is what you were facing.

For me, Ctrl+V pasted the shape as well. What do you see in the mask manager? (Bottom left in the darkroom.) This is from the target of a pasted history stack:

Kofa - In Mask Manager - I see nothing at all

This is a photo of a Garganey Duck in London WWT

As you can see - no shapes in Mask Manager, but Local Contrast module is indicating that there is a mask applied.

It looks like CTRL-C CTRL-V has copied most things from the previous image, but no the shape to be masked, which should be roughly the outline of the duck.

CTRL-Shift-V and then just hit Enter copies everything correctly.

When I’m back in town next Monday, I’ll do a rebuild of latest nightly plus the Citrinox fork and see if the issue persists. Maybe I can even file a bug.

Why is your build ‘dirty’?

I’ve sometimes wonderered about that,although not every build describes itself as dirty.

I just did a git pull and proceeded from there.

Builds will not show as dirty now since the maintainer has fixed a bug earlier this week.

“dirty” means that your local copy does not exactly match the version that is checked out. Either one or more files has been modified, and / or a submodule is out of date. To see what the differences are, run “git diff”.
If a submodule appears in the git diff output, then run “git submodule update” to bring it up to date.
If there are changes to files, and you want to discard all of them so that your local copy exactly matches the remote branch, then run “git checkout -f”.
if “git diff” indicates that there are no changes, then “dirty” should not appear in the version number.

The mask icon also indicates pure parametric masks. These aren’t displayed in the mask manager. So check if there are drawn masks used in local contrast.

You could try a git status. A git pull will just add new modifications to your local working copy, but if you have modifications locally that do not conflict with incoming ones, your copy could still remain dirty.
git checkout . will overwrite your local changes with the master copy.
This is my shell script to update and build darktable:

#!/bin/bash
renice -n 19 -p $$
ionice -c 3 -p $$

rm -rf ~/.cache/darktable/cached_kernels*

cd ~/darktable ; 
git clean -d -f -x ;
git submodule update
git pull --rebase
./build.sh --prefix /home/kofa/darktable-master && cmake --build "/home/kofa/darktable/build" --target install --

darktable sources are in /home/kofa/darktable, and I install to /home/kofa/darktable-master. git clean -d -f -x makes sure I start with a clean slate. I delete the compiled OpenCL kernels to make sure no old ones remain in my runtime environment: rm -rf ~/.cache/darktable/cached_kernels*.