-
Notifications
You must be signed in to change notification settings - Fork 111
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Allow programatically reading / setting output color profile of an image to be exported #522
Comments
The current export output color profile is also stored in a DT preference ( Edit: scratch that, dt.preferences.read("darktable", "plugins/lighttable/export/icctype", "integer") -- 26 seems to work. |
Reading code I find...
Not part of the image. The image record has a colorspace entry, but is SRGB or Adobe RGB as used by the camera.
They are translated, so the comparison code would have to be translated too. We are working on getting the Lua scripts to use darktable translation, so this may be possible in the future. It would probably require changes to dt.gui.action() to expose the information. For the options above...
Which leaves option 1 (at least for now)...
|
That's what I did in the end in 6a835ce, with a slightly improved method. I go to |
Forked from pixls.us thread:
In a script, I'm using the following code to export an image to JPG:
That code is dependent on the export module's output color profile currently selected in the UI. I would like to either force a specific profile (let's say
Display P3 RGB
), or detect when an invalid profile (for my purpose) is used, to be able to warn the user. My options with the current API are:dt.gui.action("lib/export/profile", 0, "selection", "first", 0.0)
+dt.gui.action("lib/export/profile", 0, "selection", "next", 10.0)
asDisplay P3 RGB
is currently the 11th one displayed; that's hardcoded in colorspaces.c.Pro: Unobtrusive.
Con: Depends on DT internals without their proper representation through the API. If DT profile order ever changes, the script forcefully selects a different profile.
dt.gui.action("lib/export/profile", 0, "selection", "popup", 0.0)
Pro: Doesn't depend on DT internals, user could select their own ICC profiles too.
Con: Obtrusive; user is prompted to the action even if the current settings are correct, they are also asked to select the only correct option.
Export, then check the resulting file metadata, and error out post factum.
Pro: Unobtrusive.
Con: Suboptimal UX, as I cannot prevent the error from happening, or implement input data validation before triggering the action. Possibly the metadata won't be there if export doesn't have the EXIF.
Export outside of DT
Pro: Total control over the output.
Con: Needs an intermediary export in DT to a format that isn't sensitive to color profile (does it even exist?) to retain changes done to the RAW in DT, like cropping etc.
All of the workarounds above would not be needed if the Lua API allowed for:
dt_imageio_module_format_t.write_image
, ordt_lua_image_t
(this might be through EXIF image information editor #414). I could then useimage settings
profile in export, which is the first option in the combobox, oritem:
prefix doesn't seem to work there)The text was updated successfully, but these errors were encountered: