<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>GUI toolboxes on Ansel</title><link>https://ansel.photos/en/doc/views/toolboxes/</link><description>Recent content in GUI toolboxes on Ansel</description><generator>Hugo -- gohugo.io</generator><language>en</language><copyright>© Copyright 2022-2025 – Aurélien Pierre</copyright><lastBuildDate>Sun, 04 Dec 2022 02:19:02 +0100</lastBuildDate><atom:link href="https://ansel.photos/en/doc/views/toolboxes/index.xml" rel="self" type="application/rss+xml"/><item><title>Transitioning from darktable to Ansel</title><link>https://ansel.photos/en/doc/from-darktable/</link><pubDate>Wed, 18 Jan 2023 00:00:00 +0000</pubDate><updated>Thu, 19 Jan 2023 00:00:00 +0000</updated><guid>8f6f144d7d932c300b7c75aafc376c75f13e4300b47a752d507682b3be6cf761</guid><description>&lt;/section>
&lt;section id="what-was-removed-from-mainstream-darktable">
&lt;h2 class="text-left heading">
What was removed from mainstream darktable
&lt;span class="header-filet">&lt;/span>
&lt;/h2>
&lt;/section>
&lt;section id="features">
&lt;h3 class="text-left heading">
Features
&lt;/h3>
&lt;dl>
&lt;dt>&lt;a href="https://docs.darktable.org/usermanual/3.8/en/tethering/" title="External link" target="_blank" rel="noopener noreferrer nofollow" >The tethering view&amp;thinsp;&lt;sup class="icon">&lt;i class="fa fa-external-link-alt">&lt;/i>&lt;/sup>&lt;/a>&lt;/dt>
&lt;dd>It relies on the lib GPhoto2 which is super brittle and buggy. The tethering view is merely a GUI over Gphoto2, much like &lt;a href="https://entangle-photo.org/" title="External link" target="_blank" rel="noopener noreferrer nofollow" >Entangle&amp;thinsp;&lt;sup class="icon">&lt;i class="fa fa-external-link-alt">&lt;/i>&lt;/sup>&lt;/a>. The problem is GPhoto2 is known to break something different at each new release, so it&amp;rsquo;s simply not worth the trouble to maintain a GUI over a Schrödinger cat. Use Entangle if you need to.&lt;/dd>
&lt;dt>The easter egg video game&lt;/dt>
&lt;dd>Not funny if you happen to be with a client on April 1st and your working app opens on a silly game that can&amp;rsquo;t even be closed with &lt;kbd>Ctrl+Q&lt;/kbd>. (Yes, it happened to me).&lt;/dd>
&lt;dt>The histogram overlay control for &lt;a href="https://docs.darktable.org/usermanual/3.8/en/module-reference/utility-modules/shared/scopes/#exposure-adjustment" title="External link" target="_blank" rel="noopener noreferrer nofollow" >exposure and black level&amp;thinsp;&lt;sup class="icon">&lt;i class="fa fa-external-link-alt">&lt;/i>&lt;/sup>&lt;/a>&lt;/dt>
&lt;dd>It&amp;rsquo;s too easy to inadvertently mess up exposure when cycling through scopes (especially with a Wacom tablet) and it adds unnecessary GUI motion events and redraws. In cases of multiple instances of exposure module, it is automatically linked to the controls of the last instance, which is generally wrong because it is typically masked.&lt;/dd>
&lt;dt>The new filtering option&lt;/dt>
&lt;dd>A beautiful shit made of 6300 lines of bloat and still counting, that needs a screen-reader to understand WTF those icons mean, supposed to fix a problem nobody had with something that adds bugs and trouble. That thing is the poster case of everything that&amp;rsquo;s wrong in Geektable 4.0. It should be called a regression. The same feature is achieved in Ansel with about 580 lines of code. And to say that the new filtering started as a refactoring project… Never let the darktable idiots refactor anything, it&amp;rsquo;s too dangerous.&lt;/dd>
&lt;dt>The &lt;a href="https://docs.darktable.org/usermanual/3.8/en/lighttable/digital-asset-management/star-color/#star-ratings" title="External link" target="_blank" rel="noopener noreferrer nofollow" >stars rating&amp;thinsp;&lt;sup class="icon">&lt;i class="fa fa-external-link-alt">&lt;/i>&lt;/sup>&lt;/a> toolbar in lighttable&lt;/dt>
&lt;dd>It&amp;rsquo;s redundant with overlays and requires to travel too far with the cursor to set it. Use overlays with cursor or key shortcuts to set stars.&lt;/dd>
&lt;dt>The &lt;a href="https://docs.darktable.org/usermanual/3.8/en/module-reference/utility-modules/lighttable/timeline/" title="External link" target="_blank" rel="noopener noreferrer nofollow" >timeline&amp;thinsp;&lt;sup class="icon">&lt;i class="fa fa-external-link-alt">&lt;/i>&lt;/sup>&lt;/a>&lt;/dt>
&lt;dd>terrible code and a huge loss of CPU cycles for a niche feature that essentially serves no purpose. This was responsible for way too many SQL requests and removing it is responsible for most of the GUI responsiveness improvement.&lt;/dd>
&lt;dt>The main window borders with collapsing arrows / silly cycling through headers&lt;/dt>
&lt;dd>The borders marked with arrows allow to collapse or expand the GUI panels. But they waste space, are typically too narrow for many displays, and tend to reappear when you don&amp;rsquo;t want them because their state is defined per view. For now, collapsing side-bars can be achieved with &lt;kbd>Ctrl + Shift + L(eft)&lt;/kbd>, &lt;kbd>Ctrl + Shift + R(ight)&lt;/kbd>, top bar with &lt;kbd>Ctrl + Shift + T(op)&lt;/kbd> and bottom bar with &lt;kbd>Ctrl + Shift + B(ottom)&lt;/kbd>. In the future, a global menu (you know, like in any app since 1990) will take care of that with a &lt;em>view&lt;/em> menu.&lt;/dd>
&lt;dd>The silly cycling through all the possible combinations of headers and bottoms that happened when hitting &lt;kbd>Ctrl + Shift + T(op)&lt;/kbd> or &lt;kbd>Ctrl + Shift + B(ottom)&lt;/kbd> has been completly removed. &lt;kbd>Ctrl + Shift + T(op)&lt;/kbd> toggles the top toolbar only and leaves the main header unchanged (use &lt;kbd>Ctrl + H(eader)&lt;/kbd> to toggle it). &lt;kbd>Ctrl + Shift + B(ottom)&lt;/kbd> toggles the bottom toolbar only and leaves the filmstrip unchanged (use &lt;kbd>Ctrl + F(ilmstrip)&lt;/kbd> to toggle it).&lt;/dd>
&lt;dd>Removing the borders allowed to increase the width of the sidebars scrolling sliders for better interaction.&lt;/dd>
&lt;dt>The &lt;a href="https://docs.darktable.org/usermanual/3.8/en/darkroom/darkroom-view-layout/" title="External link" target="_blank" rel="noopener noreferrer nofollow" >second darkroom window&amp;thinsp;&lt;sup class="icon">&lt;i class="fa fa-external-link-alt">&lt;/i>&lt;/sup>&lt;/a>&lt;/dt>
&lt;dd>darktable is slow enough with 2 pipelines (thumbnail &amp;amp; preview), a third one is not realistic. This should have been the main preview redirected to another window but the code has been hastily hacked by copy-pasting, it&amp;rsquo;s terrible. Also there is no traceability on which display profile will be used, good luck with that.&lt;/dd>
&lt;dt>The block and timeout overlay mode in lighttable&lt;/dt>
&lt;dd>terrible code for another niche feature that nobody tests until bug appear on the issue tracker that will be answered with &amp;ldquo;it works on my computer&amp;rdquo;.&lt;/dd>
&lt;dt>The extended overlays mode for thumbnails&lt;/dt>
&lt;dd>each of the EXIF metadata display triggered its own SQL request per-thumbnail, because no cache was used, because the guy who coded that doesn&amp;rsquo;t learn or doesn&amp;rsquo;t care, but such a loss of CPU cycles is inacceptable.&lt;/dd>
&lt;dt>The non-dynamic culling mode and the zoomable lighttable view&lt;/dt>
&lt;dd>They are not really used and need a lot of spaghetti code to be handled.&lt;/dd>
&lt;dt>The dark and icon themes&lt;/dt>
&lt;dd>dark themes trigger all sorts of unwanted visual illusions that make color assessment impossible. Their use is discouraged everywhere on darktable&amp;rsquo;s doc but they are still there.&lt;/dd>
&lt;dt>The ability to assign keyboard shortcuts to Gtk notebook tabs, as well as switching tabs by mouse scroll.&lt;/dt>
&lt;dd>Just because you can doesn&amp;rsquo;t mean you should, and capturing mouse scroll on inner tabs messes up with sidebar scrolling (you know, the regular scolling over content that doesn&amp;rsquo;t fit in the viewport).&lt;/dd>
&lt;dt>The VIM-style shortcuts&lt;/dt>
&lt;dd>I bet you never knew, but if you start typing &lt;code>:&lt;/code> in darktable, followed by a command, you can trigger stuff. This feature has never documented and the available features are really limited, but that still listens to all keystrokes to check if it should capture them.&lt;/dd>
&lt;dt>The histogram profile&lt;/dt>
&lt;dd>That thing is coded by copy-pasting the display code, instead of writing reusable functions. It wouldn&amp;rsquo;t be that bad if it wasn&amp;rsquo;t completely misleading and actually broke the over-exposure alert (because, yes, it&amp;rsquo;s used there too). Because the histogram is captured at the far end of the pipeline, in display color space, it might be already clipped to display gamut. Say you use Rec2020 space as the histogram profile, because it&amp;rsquo;s the working space, what you see is RGB clipped to display space then rescaled to Rec2020, which means your clipping peak will not be at the far end of the graph, where you expect it. The result is highly misleading and voids the whole principle of a scope. That&amp;rsquo;s just a whole pile of crap coded by people who have no idea of what a graphic pipeline is and hack small bits here and there because the concept of &amp;ldquo;modules&amp;rdquo; fooled them. They might be modular, but they still apply in sequence in the pipeline, so better check your inputs.&lt;/dd>
&lt;dt>Warning messages in modules&lt;/dt>
&lt;dd>I&amp;rsquo;m responsible for that stupidity. The warning messages were supposed to tell users they are doing things not really intended by the designer (for example, using 2 different steps of white balance correction) and to ask them to double-check if that&amp;rsquo;s really what they wanted. That backfired badly because users don&amp;rsquo;t get the difference between an error and an alert, so even when instructed to use 2 white balances (for example, a custom-corrected raw WB), they would get afraid by the &amp;ldquo;error&amp;rdquo; and annoy me with questions. Given that this feature is clearly not helping anybody, and did not trigger the expected behaviour (that is, RTFM), there is no point in keeping it. The option to hide them is removed as well.&lt;/dd>
&lt;dt>Favourite presets button&lt;/dt>
&lt;dd>There was this favourite presets button at the left of the bottom panel in darkroom, and I found nobody who ever used it. In fact, most people who I asked did not ever know it even existed. So it&amp;rsquo;s gone.&lt;/dd>
&lt;dt>Importing from camera&lt;/dt>
&lt;dd>darktable has a way to mount the camera file system (SD or CF memory cards) through USB, using the library GPhoto2. But the desktop environment is also be able to mount the camera as a local hard drive using PTP and/or MTP protocol, possibly also through Gphoto2. In that case, darktable and the OS may compete for access to the USB media, so you need to unmount it first from the OS to be able to open it from darktable. On Windows, you even need to install custom USB drivers to make it work with GPhoto2, but these drivers will prevent the camera to work with the OS until you completly remove and reset them. So this feature is completely removed, and Ansel loads memory cards as USB media through the OS mounts. To enable this, you may have to install Linux packages such as &lt;code>libmtp&lt;/code>, &lt;code>linuxptp&lt;/code>, &lt;code>libptp&lt;/code>, &lt;code>libgphoto2&lt;/code> and possibly &lt;code>gphoto2&lt;/code>. For your desktop environnment, you may install &lt;code>kio-mtp&lt;/code> and &lt;code>kio-extras&lt;/code> on KDE or &lt;code>gvfs-mtp&lt;/code> and &lt;code>gvfs-gphoto2&lt;/code> on Gnome. In any case, you are advised to simply use an SD of CF card reader, it&amp;rsquo;s cheap and prevents most issues that can arise from udev and cameras connected through USB.&lt;/dd>
&lt;/dl>
&lt;p>Overall, 5 to 6 SQL requests per thumbnail per &amp;ldquo;mouse over&amp;rdquo; event are now spared, due to the features removed (which still lets 3 requests…, aka 2 more than what should be).&lt;/p></description></item><item><title>Install</title><link>https://ansel.photos/en/doc/install/</link><pubDate>Sun, 11 Dec 2022 00:00:00 +0000</pubDate><updated>Mon, 12 Dec 2022 00:00:00 +0000</updated><guid>7ebe8b52113d2b75ed5abb283a61d7c2a8c730b528dddf56e596f5098edf28ec</guid><description>&lt;/section>
&lt;section id="dependencies-for-source-builds">
&lt;h2 class="text-left heading">
Dependencies for Source Builds
&lt;span class="header-filet">&lt;/span>
&lt;/h2>
&lt;p>If you plan to build from source, the Ansel repository ships per-platform dependency installer scripts in &lt;code>packaging/&lt;/code>. Use the script matching your OS (for example &lt;code>./packaging/install-deps-ubuntu.sh&lt;/code>, &lt;code>./packaging/install-deps-macos.sh&lt;/code>, or &lt;code>./packaging/install-deps-windows-msys2.sh&lt;/code>).&lt;/p>
&lt;/section>
&lt;section id="understanding-ansels-releases">
&lt;h2 class="text-left heading">
Understanding Ansel&amp;rsquo;s releases
&lt;span class="header-filet">&lt;/span>
&lt;/h2>
&lt;/section>
&lt;section id="ansel-channels">
&lt;h3 class="text-left heading">
Ansel channels
&lt;/h3>
&lt;p>Ansel development and release path follows 3 channels :&lt;/p>
&lt;ol>
&lt;li>A &lt;strong>production channel&lt;/strong> :
&lt;ol>
&lt;li>Linked to the Git &lt;a href="https://github.com/aurelienpierreeng/ansel" title="External link" target="_blank" rel="noopener noreferrer nofollow" >master branch&amp;thinsp;&lt;sup class="icon">&lt;i class="fa fa-external-link-alt">&lt;/i>&lt;/sup>&lt;/a>,&lt;/li>
&lt;li>Contains tested code supposed to work reliably for daily use,&lt;/li>
&lt;li>Contains features found under the &lt;em>Done&lt;/em> column, in the &lt;a href="https://github.com/orgs/aurelienpierreeng/projects/1" title="External link" target="_blank" rel="noopener noreferrer nofollow" >project management board&amp;thinsp;&lt;sup class="icon">&lt;i class="fa fa-external-link-alt">&lt;/i>&lt;/sup>&lt;/a>.&lt;/li>
&lt;/ol>
&lt;/li>
&lt;li>A &lt;strong>pre-release channel&lt;/strong> :
&lt;ol>
&lt;li>Backward-compatible with the production channel &lt;em>(so you can switch from one to another without breaking your image edits)&lt;/em>,&lt;/li>
&lt;li>Linked to the Git &lt;a href="https://github.com/aurelienpierreeng/ansel/tree/candidate" title="External link" target="_blank" rel="noopener noreferrer nofollow" >candidate branch&amp;thinsp;&lt;sup class="icon">&lt;i class="fa fa-external-link-alt">&lt;/i>&lt;/sup>&lt;/a>,&lt;/li>
&lt;li>Contains code to test before integration in production channel but still relatively safe to use,&lt;/li>
&lt;li>Contains features found under the &lt;em>Testing&lt;/em> column, in the &lt;a href="https://github.com/orgs/aurelienpierreeng/projects/1" title="External link" target="_blank" rel="noopener noreferrer nofollow" >project management board&amp;thinsp;&lt;sup class="icon">&lt;i class="fa fa-external-link-alt">&lt;/i>&lt;/sup>&lt;/a>.&lt;/li>
&lt;/ol>
&lt;/li>
&lt;li>An &lt;strong>experimental channel&lt;/strong> :
&lt;ol>
&lt;li>&lt;strong>non-backward-compatible&lt;/strong> with either the production or pre-release channels,&lt;/li>
&lt;li>Linked to the Git &lt;a href="https://github.com/aurelienpierreeng/ansel/tree/dev" title="External link" target="_blank" rel="noopener noreferrer nofollow" >dev branch&amp;thinsp;&lt;sup class="icon">&lt;i class="fa fa-external-link-alt">&lt;/i>&lt;/sup>&lt;/a>,&lt;/li>
&lt;li>Contains features found under the &lt;em>In progress&lt;/em> column, in the &lt;a href="https://github.com/orgs/aurelienpierreeng/projects/1" title="External link" target="_blank" rel="noopener noreferrer nofollow" >project management board&amp;thinsp;&lt;sup class="icon">&lt;i class="fa fa-external-link-alt">&lt;/i>&lt;/sup>&lt;/a>,&lt;/li>
&lt;li>This channel needs to be used aside of the production install since it contains prototypes of new modules, new versions of old modules, and other features that will upgrade the version of the
&lt;a href="https://ansel.photos/en/doc/preferences-settings/storage/#database" title="" rel="dofollow" >Ansel database&lt;/a>, making it incompatible with previous versions. It can also contain prototypes that will never make it in production.&lt;/li>
&lt;/ol>
&lt;/li>
&lt;/ol>
&lt;p>At all time, the &lt;a href="https://github.com/orgs/aurelienpierreeng/projects/1" title="External link" target="_blank" rel="noopener noreferrer nofollow" >project management Kanban board&amp;thinsp;&lt;sup class="icon">&lt;i class="fa fa-external-link-alt">&lt;/i>&lt;/sup>&lt;/a> will show what changes are being currently worked on in the non-production channels, with links to their pull request and issue, to help traceability of changes and bug reports.&lt;/p></description></item><item><title>Install on Linux</title><link>https://ansel.photos/en/doc/install/linux/</link><pubDate>Sun, 11 Dec 2022 00:00:00 +0000</pubDate><updated>Thu, 09 Apr 2026 00:00:00 +0000</updated><guid>01b73f15c3f6afc127767150698afced37d85fe1965bfd79d0a0d62ebf998b57</guid><description>&lt;/section>
&lt;section id="prerequisites">
&lt;h2 class="text-left heading">
Prerequisites
&lt;span class="header-filet">&lt;/span>
&lt;/h2>
&lt;p>Install your GPU OpenCL drivers if you have a GPU :&lt;/p>
&lt;ul>
&lt;li>For &lt;strong>Nvidia&lt;/strong> GPUs, OpenCL support is part of the CUDA proprietary driver and is not available with the open-source &lt;em>Nouveau&lt;/em> driver:
&lt;ul>
&lt;li>&lt;a href="https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#package-manager-installation" title="External link" target="_blank" rel="noopener noreferrer nofollow" >add Nvidia&amp;rsquo;s repository to your package manager&amp;thinsp;&lt;sup class="icon">&lt;i class="fa fa-external-link-alt">&lt;/i>&lt;/sup>&lt;/a>,&lt;/li>
&lt;li>&lt;a href="https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#driver-installation" title="External link" target="_blank" rel="noopener noreferrer nofollow" >install the CUDA packages&amp;thinsp;&lt;sup class="icon">&lt;i class="fa fa-external-link-alt">&lt;/i>&lt;/sup>&lt;/a>,&lt;/li>
&lt;li>Reboot.&lt;/li>
&lt;li>&lt;strong>It is highly discouraged to manually install drivers through &lt;a href="https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#runfile-installation" title="External link" target="_blank" rel="noopener noreferrer nofollow" >runfiles (.run)&amp;thinsp;&lt;sup class="icon">&lt;i class="fa fa-external-link-alt">&lt;/i>&lt;/sup>&lt;/a> as it is riddled with problems you will need to manually fix everytime the Linux kernel is updated&lt;/strong>.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>For &lt;strong>AMD&lt;/strong> GPUs, the &lt;a href="https://www.amd.com/en/support/kb/faq/amdgpu-installation" title="External link" target="_blank" rel="noopener noreferrer nofollow" >AMDGPU-Pro&amp;thinsp;&lt;sup class="icon">&lt;i class="fa fa-external-link-alt">&lt;/i>&lt;/sup>&lt;/a> driver is recommended:
&lt;ul>
&lt;li>&lt;a href="https://www.amd.com/en/support" title="External link" target="_blank" rel="noopener noreferrer nofollow" >download the relevant driver&amp;thinsp;&lt;sup class="icon">&lt;i class="fa fa-external-link-alt">&lt;/i>&lt;/sup>&lt;/a>,&lt;/li>
&lt;li>&lt;a href="https://www.amd.com/en/support/kb/faq/amdgpu-installation#faq-Prerequisites" title="External link" target="_blank" rel="noopener noreferrer nofollow" >extract the archive&amp;thinsp;&lt;sup class="icon">&lt;i class="fa fa-external-link-alt">&lt;/i>&lt;/sup>&lt;/a>,&lt;/li>
&lt;li>Run the installation script:
&lt;ul>
&lt;li>If you want only the OpenCL driver, without video drivers and OpenGL (assuming your system already has some of those working): &lt;code>./amdgpu-pro-install -y --opencl=pal,legacy --headless&lt;/code>,&lt;/li>
&lt;li>If you want the complete GPU stack (OpenCL/OpenGL, Vulkan, video drivers): &lt;code>./amdgpu-pro-install -y --opencl=pal,legacy&lt;/code>è&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Reboot.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>For &lt;strong>Intel&lt;/strong> embedded GPUs, the &lt;em>Neo&lt;/em> driver provides support for OpenCL 3.0 on relatevly recent
&lt;ul>
&lt;li>&lt;a href="https://github.com/intel/compute-runtime/releases/latest" title="External link" target="_blank" rel="noopener noreferrer nofollow" >official driver releases&amp;thinsp;&lt;sup class="icon">&lt;i class="fa fa-external-link-alt">&lt;/i>&lt;/sup>&lt;/a> contain the Ubuntu &lt;code>.deb&lt;/code> packages, you need to install &lt;code>intel-opencl-icd_xxxx.deb&lt;/code>,&lt;/li>
&lt;li>The safest way is to locate the &lt;code>intel-opencl-icd&lt;/code> package in your distribution&amp;rsquo;s repository, and install it. It can be part of optional or third-party repositories for distributions leaning a bit too hard toward open-sourcery (Debian/Fedora).&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;p>If you don&amp;rsquo;t have a GPU, a manual build is recommended to get the best performance possible (see below).&lt;/p></description></item><item><title>Install on Windows</title><link>https://ansel.photos/en/doc/install/windows/</link><pubDate>Sun, 11 Dec 2022 00:00:00 +0000</pubDate><updated>Mon, 16 Feb 2026 00:00:00 +0000</updated><guid>53cb7b6e3fdce60402e538af604f2619dadf2dc8ab5d41304144782771dcfc27</guid><description>&lt;/section>
&lt;section id="prerequisites">
&lt;h2 class="text-left heading">
Prerequisites
&lt;span class="header-filet">&lt;/span>
&lt;/h2>
&lt;p>Install your OpenCL GPU drivers if you have a GPU.&lt;/p>
&lt;p>On Windows 11, it seems that the system OpenCL drivers for Intel embedded GPU cause issues (black images), especially with newer generation CPU. You may want to &lt;a href="https://community.intel.com/t5/OpenCL-for-CPU/uninstall-Intel-OpenCL/m-p/1134032#M5756" title="External link" target="_blank" rel="noopener noreferrer nofollow" >remove Windows drivers&amp;thinsp;&lt;sup class="icon">&lt;i class="fa fa-external-link-alt">&lt;/i>&lt;/sup>&lt;/a> and &lt;a href="https://www.intel.com/content/www/us/en/developer/articles/tool/opencl-drivers.html#proc-graph-section" title="External link" target="_blank" rel="noopener noreferrer nofollow" >install Intel ones&amp;thinsp;&lt;sup class="icon">&lt;i class="fa fa-external-link-alt">&lt;/i>&lt;/sup>&lt;/a>.&lt;/p>
&lt;p>See the &lt;a href="#caveats" title="" rel="dofollow" >caveats section below&lt;/a> for more details.&lt;/p>
&lt;/section>
&lt;section id="exe-package-recommended">
&lt;h2 class="text-left heading">
EXE package (recommended)
&lt;span class="header-filet">&lt;/span>
&lt;/h2>
&lt;p>The Ansel project provides an official &lt;code>.exe&lt;/code> package, built for the stable, pre-release and experimental channels. This is the recommended way of installing Ansel, since it is fresh from the repository, always up-to-date and ships updated lens databases for Lensfun.&lt;/p></description></item><item><title>Install on Mac OS</title><link>https://ansel.photos/en/doc/install/macos/</link><pubDate>Sun, 11 Dec 2022 00:00:00 +0000</pubDate><updated>Mon, 16 Feb 2026 00:00:00 +0000</updated><guid>d4ad93576c6a25aa97806b831bee7d8d12800927d45e8efc4ed458823d238032</guid><description>&lt;/section>
&lt;section id="build-from-source-homebrew-recommended">
&lt;h2 class="text-left heading">
Build from source (Homebrew, recommended)
&lt;span class="header-filet">&lt;/span>
&lt;/h2>
&lt;p>This method is derived from the repository scripts in &lt;code>packaging/macosx/&lt;/code>.&lt;/p>
&lt;/section>
&lt;section id="prerequisites">
&lt;h3 class="text-left heading">
Prerequisites
&lt;/h3>
&lt;ul>
&lt;li>Install Xcode Command Line Tools:
&lt;figure class="full-width border-0 p-0 mt-2 mb-3">
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-1">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-1">1&lt;/a>&lt;/span>&lt;span>xcode-select --install&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/figure>
&lt;/li>
&lt;li>Install Homebrew from &lt;a href="https://brew.sh/" title="External link" target="_blank" rel="noopener noreferrer nofollow" >https://brew.sh/&amp;thinsp;&lt;sup class="icon">&lt;i class="fa fa-external-link-alt">&lt;/i>&lt;/sup>&lt;/a> (use the default prefix: &lt;code>/opt/homebrew&lt;/code> on Apple Silicon, &lt;code>/usr/local&lt;/code> on Intel).&lt;/li>
&lt;/ul>
&lt;/section>
&lt;section id="steps">
&lt;h3 class="text-left heading">
Steps
&lt;/h3>
&lt;ol>
&lt;li>Clone the repository and submodules:
&lt;figure class="full-width border-0 p-0 mt-2 mb-3">
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-1-1">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-1-1">1&lt;/a>&lt;/span>&lt;span>git clone --depth &lt;span style="color:#ae81ff">1&lt;/span> https://github.com/aurelienpierreeng/ansel.git
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-1-2">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-1-2">2&lt;/a>&lt;/span>&lt;span>cd ansel
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-1-3">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-1-3">3&lt;/a>&lt;/span>&lt;span>git submodule init
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-1-4">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-1-4">4&lt;/a>&lt;/span>&lt;span>git submodule update&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/figure>
&lt;/li>
&lt;li>Install build dependencies:
&lt;figure class="full-width border-0 p-0 mt-2 mb-3">
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-2-1">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-2-1">1&lt;/a>&lt;/span>&lt;span>./packaging/macosx/1_install_hb_dependencies.sh&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/figure>
This is the canonical dependency list used by CI and packaging.&lt;/li>
&lt;li>Build and install into the local &lt;code>install/&lt;/code> directory:
&lt;figure class="full-width border-0 p-0 mt-2 mb-3">
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-3-1">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-3-1">1&lt;/a>&lt;/span>&lt;span>./packaging/macosx/2_build_hb_ansel_custom.sh&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/figure>
Edit &lt;code>packaging/macosx/2_build_hb_ansel_custom.sh&lt;/code> if you need custom CMake options.&lt;/li>
&lt;li>(Optional) Create a macOS application bundle (can be signed if you have a Developer ID):
&lt;figure class="full-width border-0 p-0 mt-2 mb-3">
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-4-1">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-4-1">1&lt;/a>&lt;/span>&lt;span>export CODECERT&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;your.developer@apple.id&amp;#34;&lt;/span> &lt;span style="color:#75715e"># optional&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-4-2">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-4-2">2&lt;/a>&lt;/span>&lt;span>./packaging/macosx/3_make_hb_ansel_package.sh&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/figure>
The bundle is generated at &lt;code>install/package/Ansel.app&lt;/code>.&lt;/li>
&lt;li>(Optional) Generate a DMG image from the bundle:
&lt;figure class="full-width border-0 p-0 mt-2 mb-3">
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-5-1">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-5-1">1&lt;/a>&lt;/span>&lt;span>./packaging/macosx/4_make_hb_ansel_dmg.sh&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/figure>
The output is &lt;code>Ansel-&amp;lt;version&amp;gt;-&amp;lt;arch&amp;gt;.dmg&lt;/code> in the &lt;code>install/&lt;/code> directory.&lt;/li>
&lt;/ol>
&lt;/section>
&lt;section id="running-the-build">
&lt;h3 class="text-left heading">
Running the build
&lt;/h3>
&lt;ul>
&lt;li>Development install (after step 3):
&lt;figure class="full-width border-0 p-0 mt-2 mb-3">
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-6-1">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-6-1">1&lt;/a>&lt;/span>&lt;span>./install/bin/ansel&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/figure>
&lt;/li>
&lt;li>From the app bundle (after step 4):
&lt;figure class="full-width border-0 p-0 mt-2 mb-3">
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-7-1">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-7-1">1&lt;/a>&lt;/span>&lt;span>./install/package/Ansel.app/Contents/MacOS/ansel --configdir ~/.config/ansel --cachedir ~/.cache/ansel/&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/figure>
&lt;/li>
&lt;/ul>
&lt;/section>
&lt;section id="notes-and-limitations">
&lt;h3 class="text-left heading">
Notes and limitations
&lt;/h3>
&lt;ul>
&lt;li>The DMG is not notarized. If Gatekeeper blocks it, remove the quarantine attribute:
&lt;figure class="full-width border-0 p-0 mt-2 mb-3">
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-8-1">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-8-1">1&lt;/a>&lt;/span>&lt;span>xattr -d com.apple.quarantine Ansel-*.dmg&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/figure>
&lt;/li>
&lt;li>The DMG is only guaranteed to run on the same macOS version it was built on.&lt;/li>
&lt;li>Homebrew package versions define the library versions bundled into the app.&lt;/li>
&lt;/ul>
&lt;/section>
&lt;section id="macports-method-legacy-intel-only">
&lt;h2 class="text-left heading">
MacPorts method (legacy, Intel-only)
&lt;span class="header-filet">&lt;/span>
&lt;/h2>
&lt;p>A legacy Intel-only method using MacPorts exists in &lt;code>packaging/macosx/BUILD.txt&lt;/code>. It includes custom patches for &lt;code>exiv2&lt;/code>, &lt;code>gnutls&lt;/code>, and &lt;code>gtk-osx-application&lt;/code>, and uses &lt;code>gtk-mac-bundler&lt;/code> to produce a DMG. Use this only if you specifically need a MacPorts-based build.&lt;/p></description></item><item><title>Install OpenCL drivers</title><link>https://ansel.photos/en/doc/install/opencl/</link><pubDate>Tue, 27 Dec 2022 00:00:00 +0000</pubDate><updated>Tue, 27 Dec 2022 00:00:00 +0000</updated><guid>dc2dbf7705fc68904658aea52a23ce52a95b84496f3e533f0b84101bfe22058d</guid><description>&lt;p>OpenCL is a vendor-agnostic and cross-platform way of offloading computations to the GPU. GPUs are designed specifically to handle pixel operations, with an optimized memory layout and a massively multi-core architecture&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup> allowing for fast and energy-efficient image processing.&lt;/p>
&lt;p>But OpenCL can only be used for background computational (offline rendering) tasks and cannot be used to render the GUI in real-time, which is the realm of OpenGL.&lt;/p>
&lt;p>The architecture of Ansel and darktable pixel pipeline is flawed in that regard, because the output of (fast) OpenCL computations has to be sent back to the (slow) Gtk 3 thread, which paints the processed image within the GUI (along with the rest of GUI controls) using only a single CPU core. This is the biggest performance bottleneck in darktable and Ansel, and the reason why it is a rather slow application.&lt;/p></description></item><item><title>Configuration files</title><link>https://ansel.photos/en/doc/install/configuration/</link><pubDate>Wed, 18 Jan 2023 00:00:00 +0000</pubDate><updated>Wed, 18 Jan 2023 00:00:00 +0000</updated><guid>8c1c592a7fa315707c5a6552b4b26001d3246c3059180aa56c715e688c50dcaf</guid><description>&lt;p>The configuration files of Ansel are located in :&lt;/p>
&lt;ul>
&lt;li>&lt;code>$HOME/.config/ansel&lt;/code> for Mac OS and Linux&lt;/li>
&lt;li>&lt;code>C:\%LOCALAPPDATA%\ansel&lt;/code> on Windows.&lt;/li>
&lt;/ul>
&lt;/section>
&lt;section id="default-configuration-files">
&lt;h2 class="text-left heading">
Default configuration files
&lt;span class="header-filet">&lt;/span>
&lt;/h2>
&lt;dl>
&lt;dt>&lt;code>anselrc&lt;/code>&lt;/dt>
&lt;dd>contains all user preferences except presets and styles. This may be opened in any text editor for manual edit if any preference makes the software crash at startup.&lt;/dd>
&lt;dt>&lt;code>keyboardrc&lt;/code>&lt;/dt>
&lt;dd>contains all user-defined keyboard shortcuts.&lt;/dd>
&lt;dt>&lt;code>data.db&lt;/code>&lt;/dt>
&lt;dd>contains user presets for modules, styles, tags and locations. This is an SQLite database. It is backed-up before updating to a new release and automatic snapshots can be configured (see below).&lt;/dd>
&lt;dt>&lt;code>library.db&lt;/code>&lt;/dt>
&lt;dd>contains all images known to Ansel, along with their directories (dubbed &lt;em>film rolls&lt;/em>). Like the previous, it is an SQLite database backed-up before updating to new releases and with optional snapshots.&lt;/dd>
&lt;/dl>
&lt;p>The frequency of snapshots can be defined in the software global &lt;em>Preferences&lt;/em> -&amp;gt; tab &lt;em>Storage&lt;/em> -&amp;gt; section &lt;em>Database&lt;/em> -&amp;gt; entry &lt;em>Create database snapshots&lt;/em> and &lt;em>how many snapshot to keep&lt;/em>. By default, Ansel saves one snapshot every week when closing the software.&lt;/p></description></item><item><title>Import configuration from darktable</title><link>https://ansel.photos/en/doc/install/darktable/</link><pubDate>Thu, 05 Jan 2023 00:00:00 +0000</pubDate><updated>Thu, 05 Jan 2023 00:00:00 +0000</updated><guid>2584d2d3d89b60c027a1065c5687d627769c4aec99bdb8e2a977fb19802f74cd</guid><description>&lt;p>Ansel is based on darktable 4.0 and configuration files of darktable 4.0.1 and prior can be seemlessly imported by Ansel, such that you recover your tags, styles, presets, and library of images.&lt;/p>
&lt;div class="alert alert-warning" role="alert">
&lt;p class="alert-heading h6">&lt;i class="fas fa-exclamation-triangle">&lt;/i> Warning&lt;/p>
Importing darktable 4.2 database into Ansel will make you lose the settings of &lt;em>filmic RGB&lt;/em>, &lt;em>sigmoid&lt;/em> and &lt;em>highlights reconstruction&lt;/em> modules for all edits using them. &lt;em>Sigmoid&lt;/em> is not and will never be supported into Ansel, and the nonsensical changes made to &lt;em>filmic RGB&lt;/em> in darktable 4.2 will never be ported to Ansel. All other modules should still work.
&lt;/div>
&lt;/section>
&lt;section id="importing-usual-darktable-configuration-files">
&lt;h2 class="text-left heading">
Importing usual darktable configuration files
&lt;span class="header-filet">&lt;/span>
&lt;/h2>
&lt;div class="alert alert-info" role="alert">
&lt;p class="alert-heading h6">&lt;i class="fas fa-info-circle">&lt;/i> Note&lt;/p></description></item><item><title>Debugging</title><link>https://ansel.photos/en/doc/install/debug/</link><pubDate>Sun, 22 Jan 2023 00:00:00 +0000</pubDate><updated>Sun, 22 Jan 2023 00:00:00 +0000</updated><guid>19533a696927b235a782725eae4ad65d8b9a7c5678de0260d84acde22827e6ea</guid><description>&lt;p>Ansel is written in the C language. While C &lt;strong>pretends&lt;/strong> to be portable (&lt;em>runs the same on all operating systems&lt;/em>), many little things need to be contextually adapted to each OS using slightly different code. Also, depending on hardware and on the version of the dependencies, even on Linux, some discrepancies can occur between distributions.&lt;/p>
&lt;p>That is to say that bugs are almost impossible to anticipate when programming, and the default state of a computer program is buggy. Reporting bugs properly is the only way to help cleaning up the unforseen pathological cases.&lt;/p></description></item><item><title>Getting started</title><link>https://ansel.photos/en/doc/getting-started/</link><pubDate>Thu, 15 May 2025 00:00:00 +0000</pubDate><updated>Thu, 15 May 2025 00:00:00 +0000</updated><guid>d4d25d6c9f65b89772130b2751f525f01af4fa41610e77c6bdd1b6952a751262</guid><description/></item><item><title>Import images</title><link>https://ansel.photos/en/doc/getting-started/import/</link><pubDate>Mon, 24 Jun 2024 00:00:00 +0000</pubDate><updated>Mon, 24 Jun 2024 00:00:00 +0000</updated><guid>a65df655f58ee1a6bd516ed5c0a54b283686f3e0bf8379d2f487ecf0a5c52746</guid><description>&lt;/section>
&lt;section id="basics">
&lt;h2 class="text-left heading">
Basics
&lt;span class="header-filet">&lt;/span>
&lt;/h2>
&lt;p>Ansel backbone is a library of images, saved as an SQLite database into &lt;code>~/.config/ansel/library.db&lt;/code>. Since Ansel is a non-destructive photo editor, editings are saved as histories of settings, along with image metadata, as text&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup> into the library database. The application of editing histories over raw images, as to produce output raster images, is the export step.&lt;/p>
&lt;p>The library is also used to keep track of image collections (by tags, folders, EXIF, editing time, etc.). Because of this, we need to make the library aware of new images : it is the import step. This will initialize a new database entry with metadata and a virgin history for each imported picture.&lt;/p></description></item><item><title>Editing images</title><link>https://ansel.photos/en/doc/getting-started/editing/</link><pubDate>Thu, 15 May 2025 00:00:00 +0000</pubDate><updated>Thu, 15 May 2025 00:00:00 +0000</updated><guid>229da67779b8e7a2f6d9ee22c3b3958dfb542a508c58a702802a9a340bdce928</guid><description>&lt;/section>
&lt;section id="understanding-non-destructive-editing">
&lt;h2 class="text-left heading">
Understanding non-destructive editing
&lt;span class="header-filet">&lt;/span>
&lt;/h2>
&lt;p>Before diving deeper into how to use the software, we should stop here to explain its general paradigm : non-destructive editing.&lt;/p>
&lt;p>Once you
&lt;a href="https://ansel.photos/en/doc/getting-started/import/" title="" rel="dofollow" >imported&lt;/a> images to Ansel, what you really did is only to create an entry for them into the
&lt;a href="https://ansel.photos/en/doc/install/configuration/" title="" rel="dofollow" >library&lt;/a> database. The modifications you make on these images are never written to the original images, which are actually never changed. This is a strong design requirement aiming at protecting your input RAW images from any kind of corruption.&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup> Ansel will not even let users change the EXIF date and time in the original files.&lt;/p></description></item><item><title>Library and collections</title><link>https://ansel.photos/en/doc/getting-started/library/</link><pubDate>Thu, 15 May 2025 00:00:00 +0000</pubDate><updated>Thu, 15 May 2025 00:00:00 +0000</updated><guid>90400d267a730a3328c543d310bce4665b60e8a2e00eb44aac823d3431b56788</guid><description>&lt;p>Ansel keeps a database of all images it knows, that is all images that were
&lt;a href="https://ansel.photos/en/doc/getting-started/import/" title="" rel="dofollow" >imported&lt;/a>, until you actively remove them from the library (global menu : &lt;em>File&lt;/em> 🡒 &lt;em>Remove from library&lt;/em>). The library stores the filesystem path of the images, their metadata and their editing history.&lt;/p>
&lt;div class="alert alert-warning" role="alert">
&lt;p class="alert-heading h6">&lt;i class="fas fa-exclamation-triangle">&lt;/i> Warning&lt;/p>
Ansel does not listen to the content of filesystem folders, meaning it will not be notified if imported images are (re)moved on the filesystem. You will need to manually update the pathes if that is the case, or you can move those files directly with Ansel (under the global menu &lt;em>File&lt;/em>).
&lt;/div>
&lt;p>Ansel will then perform database extractions based on arbitrary user criteria : those are called &lt;em>collections&lt;/em>. They are built in
&lt;a href="https://ansel.photos/en/doc/views/lighttable/" title="" rel="dofollow" >lighttable&lt;/a> from the &lt;em>library&lt;/em> toolbox and from the &lt;em>include&lt;/em> toolbar. Ansel has no concept of gallery or virtual folder that you &lt;strong>create&lt;/strong> first, then to which you &lt;strong>add&lt;/strong> arbitrary images. Instead, in Ansel, you &lt;strong>attach&lt;/strong> tags to images, then &lt;strong>collect&lt;/strong> all images having a certain tag (or any kind of metadata, base folder, etc.), possibly mixing filters and search criteria to narrow-down the search : this is what makes a collection.&lt;/p></description></item><item><title>Image selection</title><link>https://ansel.photos/en/doc/getting-started/selection/</link><pubDate>Thu, 15 May 2025 00:00:00 +0000</pubDate><updated>Thu, 15 May 2025 00:00:00 +0000</updated><guid>042d65d095394c7da065b070d7e2b4320727ff8def6df380b870c0e388d6c91c</guid><description>&lt;p>Ansel allows batch-applying editing histories (through copy-pasting, or through styles) or metadata. The target images for those batch-operations are &lt;em>selected&lt;/em> images. But even single-image operations (like opening in
&lt;a href="https://ansel.photos/en/doc/views/darkroom/" title="" rel="dofollow" >darkroom&lt;/a> to edit, or editing metadata, copy/pasting, etc.) use selections.&lt;/p>
&lt;p>Selections are particular objects in Ansel, because :&lt;/p>
&lt;ol>
&lt;li>They are remembered between reboots and across ateliers (views) changes,&lt;/li>
&lt;li>They are global in the sofware and used to pass on lists of images &lt;strong>between&lt;/strong> lighttable and other ateliers,&lt;/li>
&lt;li>They are disabled and inactive &lt;strong>within&lt;/strong> an atelier (except for the lighttable), which use active images instead (contextual selection),&lt;/li>
&lt;li>They are necessarily a subset of the current filtered collection (as displayed in the
&lt;a href="https://ansel.photos/en/doc/views/lighttable/" title="" rel="dofollow" >lighttable&lt;/a>),&lt;/li>
&lt;li>They can be set only from the
&lt;a href="https://ansel.photos/en/doc/views/lighttable/" title="" rel="dofollow" >lighttable&lt;/a> view (no selection can be performed or used from the
&lt;a href="https://ansel.photos/en/doc/views/toolboxes/filmstrip/" title="" rel="dofollow" >filmstrip&lt;/a>),&lt;/li>
&lt;li>They can be turned into a temporary collection themselves, by using the &lt;em>Restrict to selection&lt;/em> button in the include/filter toolbar of the
&lt;a href="https://ansel.photos/en/doc/views/lighttable/" title="" rel="dofollow" >lighttable&lt;/a>.&lt;/li>
&lt;/ol>
&lt;p>Selected images will appear highlighted in the lighttable. Because selections are used to perform (possibly harmful) &lt;em>write&lt;/em> operations, Ansel forces &amp;ldquo;hard&amp;rdquo; interactions (pressing on an hardware button) on thumbnails to define them. These allowed interactions are :&lt;/p></description></item><item><title>Shortcuts and keyboard interaction</title><link>https://ansel.photos/en/doc/getting-started/keyboard/</link><pubDate>Sat, 10 May 2025 00:00:00 +0000</pubDate><updated>Sat, 10 May 2025 00:00:00 +0000</updated><guid>19c23dd2bae4604a005af210e910605f7d366db2a856d3fd9c65b1858e210639</guid><description>&lt;p>Ansel interface is designed to support two mutually-exclusive modes of interaction and navigation: through pointing devices (mouse or graphic tablet) and through the keyboard. Compared to Darktable, many interactions that required combinations of both have been removed, which makes the workflows more efficient.&lt;/p>
&lt;/section>
&lt;section id="shortcuts-and-available-actions">
&lt;h2 class="text-left heading">
Shortcuts and available actions
&lt;span class="header-filet">&lt;/span>
&lt;/h2>
&lt;p>Ansel exposes app-wise actions and GUI controls to keyboard bindings through pathes like &lt;code>Darkroom/Modules/Exposure/Black point&lt;/code>, where the left-most member of the path is the view and the right-most member is the actual control being bound. A such path defines an human-readable unique identifier that also says where the control is located in the application GUI.&lt;/p></description></item><item><title>Views</title><link>https://ansel.photos/en/doc/views/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>d6645073bc286752e432aeed622b6f139ad5620a7ec2282f8365f813cefddebf</guid><description>&lt;p>The functionality in Ansel is separated into six different views:&lt;/p>
&lt;dl>
&lt;dt>
&lt;a href="https://ansel.photos/en/doc/views/lighttable/" title="" rel="dofollow" >Lighttable&lt;/a>&lt;/dt>
&lt;dd>Manage images and collections. It is the main view and can be accessed from anywhere in the software by hitting the &lt;kbd>Escape&lt;/kbd> key.&lt;/dd>
&lt;dt>
&lt;a href="https://ansel.photos/en/doc/views/darkroom/" title="" rel="dofollow" >Darkroom&lt;/a>&lt;/dt>
&lt;dd>Develop a single image. It can be accessed from the lighttable by double-click on a thumbnail or by hitting the &lt;kbd>Enter&lt;/kbd> key when a picture is selected.&lt;/dd>
&lt;dt>
&lt;a href="https://ansel.photos/en/doc/views/map/" title="" rel="dofollow" >Map&lt;/a>&lt;/dt>
&lt;dd>Show geo-tagged images on a map and manually geo-tag new images. It is an optional view hidden by default, it can be enabled in the
&lt;a href="https://ansel.photos/en/doc/preferences-settings/other-views/" title="" rel="dofollow" >preferences&lt;/a>.&lt;/dd>
&lt;dt>
&lt;a href="https://ansel.photos/en/doc/views/print/" title="" rel="dofollow" >Print&lt;/a>&lt;/dt>
&lt;dd>Send images to a printer for self-made prints. It is an optional view hidden by default, it can be enabled in the
&lt;a href="https://ansel.photos/en/doc/preferences-settings/other-views/" title="" rel="dofollow" >preferences&lt;/a>. This view is not available on Windows since it relies on &lt;a href="http://www.cups.org/" title="External link" target="_blank" rel="noopener noreferrer nofollow" >CUPS&amp;thinsp;&lt;sup class="icon">&lt;i class="fa fa-external-link-alt">&lt;/i>&lt;/sup>&lt;/a>.&lt;/dd>
&lt;dt>
&lt;a href="https://ansel.photos/en/doc/views/slideshow/" title="" rel="dofollow" >Slideshow&lt;/a>&lt;/dt>
&lt;dd>Display images as a slideshow, processing them on-the-fly. It is an optional view hidden by default, it can be enabled in the
&lt;a href="https://ansel.photos/en/doc/preferences-settings/other-views/" title="" rel="dofollow" >preferences&lt;/a>.&lt;/dd>
&lt;/dl>
&lt;p>You can switch between views by clicking the view name at the top of the right-hand panel (the currently active view is highlighted).&lt;/p></description></item><item><title>Lighttable</title><link>https://ansel.photos/en/doc/views/lighttable/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Wed, 11 Oct 2023 00:00:00 +0000</updated><guid>010ea65960d0a4d28c45eaca68c35da84d41c8d36a43e8799245c91876dfca06</guid><description>&lt;p>The lighttable view is the default view loaded when Ansel is started, and allows you to view and manage your image collection. It will noticeably allow you to:&lt;/p>
&lt;ul>
&lt;li>Cull your images, assign then ratings and ultimately decide which images are worth keeping and editing,&lt;/li>
&lt;li>Filter your images based on ratings, base folder, or any metadata supported by the software (EXIF/IPTC/XMP),&lt;/li>
&lt;li>Apply metadata, like title, description, tags, GPS coordinates, or correct EXIF date/time,&lt;/li>
&lt;li>Copy-paste editing histories between images or apply styles, individually or in batches,&lt;/li>
&lt;li>Export images editing histories to final files.&lt;/li>
&lt;/ul>
&lt;/section>
&lt;section id="lighttable-content">
&lt;h2 class="text-left heading">
Lighttable content
&lt;span class="header-filet">&lt;/span>
&lt;/h2>
&lt;p>All the images known to Ansel are stored in a database, the
&lt;a href="https://ansel.photos/en/doc/install/configuration/" title="" rel="dofollow" >library&lt;/a>. The lighttable shows thumbnails of a subset of this library, called a &lt;em>collection&lt;/em>. A collection is created by filtering the images from the library using criteria, first from the
&lt;a href="https://ansel.photos/en/doc/views/toolboxes/collections/" title="" rel="dofollow" >library toolbox&lt;/a>, then from filtering/include toolbar.&lt;/p></description></item><item><title>Undo/redo</title><link>https://ansel.photos/en/doc/views/lighttable/undo-redo/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>b9c7c951365d308b9f91f91935f871c7f50d4d00f578ef61e4ca21871dbf9b76</guid><description>&lt;p>Most changes made within the lighttable are recorded and can be reverted to a previous state. This includes modifications to color labels, ratings, geo-localization, tags, metadata, orientation, copy/paste of history, image duplication, or application of a style. Note that the facility to undo/redo actions is unlimited in the number of steps while in the lighttable view, but it is reset each time you switch to a different view.&lt;/p>
&lt;p>Press Ctrl+Z to undo the last modification and Ctrl+Y to redo the last undone modification (if any).&lt;/p></description></item><item><title>Digital asset management</title><link>https://ansel.photos/en/doc/views/lighttable/digital-asset-management/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>f68234bdbc2a8ac03104ea2d9d5cd8cd3d29e772c417a9d0ab0cfa8d7c42d30f</guid><description/></item><item><title>Sidecar files</title><link>https://ansel.photos/en/doc/views/lighttable/digital-asset-management/sidecar/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>1f751b2c32f6e64dcb86e4ef5f7d2405417fdfd2b7d6e7ecb3da7cfea3f6e860</guid><description>&lt;p>Ansel is a non-destructive image editor and opens all images in read-only mode. Any data created within Ansel (metadata, tags, and image processing steps) is stored in separate &lt;code>.XMP&lt;/code> &lt;em>sidecar&lt;/em> files. These files are stored alongside the original Raw files and allow Ansel to store information about the images as well as the full editing history without touching the original raw files. When you import an image into Ansel for the first time, an XMP file is automatically generated. The generation of XMP files can be disabled in
&lt;a href="https://ansel.photos/en/doc/preferences-settings/storage/#xmp" title="" rel="dofollow" >preferences &amp;gt; storage &amp;gt; xmp&lt;/a> but this is not recommended in normal use.&lt;/p></description></item><item><title>Importing sidecar files generated by other applications</title><link>https://ansel.photos/en/doc/views/lighttable/digital-asset-management/sidecar-import/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>efed5e3d9e2e68dbbd8a1e618605e191d0abc94248a68c5e01f0cc918302c28f</guid><description>&lt;p>When importing an image, Ansel automatically checks if it is accompanied by a sidecar file. As well as looking for files named &lt;code>&amp;lt;basename&amp;gt;.&amp;lt;extension&amp;gt;.xmp&lt;/code> and &lt;code>&amp;lt;basename&amp;gt;_nn.&amp;lt;extension&amp;gt;.xmp&lt;/code> (Ansel&amp;rsquo;s XMP file naming formats) Ansel also checks for the presence of a file in the form &lt;code>&amp;lt;basename&amp;gt;.xmp&lt;/code> (the naming format for Lightroom&amp;rsquo;s XMP sidecar files). Files with the latter naming format will be read by Ansel but will not be written to. Once the image has been imported, Ansel will generate an additional XMP file using its own naming convention.&lt;/p></description></item><item><title>Local copies</title><link>https://ansel.photos/en/doc/views/lighttable/digital-asset-management/local-copies/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>b3f7660d5ad053b6a3eb8ab253c01721fb59d6d3326765e8fe58fdd9d1063121</guid><description>&lt;p>Many users have huge image collections stored on extra hard drives in their desktop computer, or on an external storage medium (RAID NAS, external hard drives etc.).&lt;/p>
&lt;p>It is a common requirement to develop a number of images while travelling using a laptop and then later synchronize them back to the original storage medium. However, copying images manually from the main storage to the laptop and back is cumbersome and prone to errors. The “local copies” feature of Ansel has been designed to directly support these use cases.&lt;/p></description></item><item><title>Thumbnails</title><link>https://ansel.photos/en/doc/views/lighttable/digital-asset-management/thumbnails/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>c7789292666e29ea8ac96d449cd1c23630fbe38f2889658e9acc449b0ea6ad56</guid><description>&lt;p>Each image in the current collection is represented by a thumbnail in the lighttable view and filmstrip module. A cache of the most recently used thumbnails is stored in a file on disk and loaded into memory at startup. The size of this cache can be adjusted in
&lt;a href="https://ansel.photos/en/doc/preferences-settings/processing/#cpu-gpu-memory" title="" rel="dofollow" >Preferences &amp;gt; Processing &amp;gt; CPU, GPU, Memory&lt;/a>.&lt;/p>
&lt;/section>
&lt;section id="thumbnail-creation">
&lt;h2 class="text-left heading">
Thumbnail creation
&lt;span class="header-filet">&lt;/span>
&lt;/h2>
&lt;p>A thumbnail is created when an image is imported into Ansel for the first time, after an image has been modified in the darkroom, or when revisiting an image whose thumbnail is no longer available.&lt;/p></description></item><item><title>Star ratings &amp; color labels</title><link>https://ansel.photos/en/doc/views/lighttable/digital-asset-management/star-color/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Thu, 12 Oct 2023 00:00:00 +0000</updated><guid>0069c7329983255646b61a21e441d64cc48f059f7333dff1e10878245f28013b</guid><description>&lt;p>Star ratings and color labels help you to sort and rank images according to your own criteria. An image&amp;rsquo;s star rating and color labels can be displayed over thumbnails in the lighttable view and filmstrip module.&lt;/p>
&lt;/section>
&lt;section id="star-ratings">
&lt;h2 class="text-left heading">
Star ratings
&lt;span class="header-filet">&lt;/span>
&lt;/h2>
&lt;p>You can give an image a rating from zero to five stars. Whenever you import images, each image receives a default rating which you can define in the
&lt;a href="https://ansel.photos/en/doc/getting-started/import/" title="" rel="dofollow" >import&lt;/a> module. You can also mark an image as “rejected”.&lt;/p></description></item><item><title>Image grouping</title><link>https://ansel.photos/en/doc/views/lighttable/digital-asset-management/grouping/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>c05a0a3d097da6920618a60af6417c4788e6d7cb8e832f9f5d63abfc5c20f538</guid><description>&lt;p>Grouping images helps to improve the structure and clarity of your image collection when displayed in the lighttable view.&lt;/p>
&lt;p>You can combine images into a group by selecting them and using the global menu &lt;em>Image&lt;/em> 🡒 &lt;em>Group images&lt;/em>, or by pressing Ctrl+G. Likewise, you can remove selected images from a group by clicking the “ungroup” button, or pressing Ctrl+Shift+G.&lt;/p>
&lt;p>Duplicated images are automatically grouped together. Similarly, if you import multiple images from the same directory, having the same base name, but different extensions (eg. &lt;code>IMG_1234.CR2&lt;/code> and &lt;code>IMG_1234.JPG&lt;/code>), those images automatically form a group.&lt;/p></description></item><item><title>Metadata and tagging</title><link>https://ansel.photos/en/doc/views/lighttable/digital-asset-management/metadata-tagging/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>be3221812ca298aa01507b140d809749cf0ca3dac4c1a648cb6ec8220c7b6f64</guid><description>&lt;p>Ansel allows you to store additional information about your images to allow them to be more easily searched and grouped. This information is stored in Ansel&amp;rsquo;s database and XMP sidecar files and can also be included within exported images.&lt;/p>
&lt;/section>
&lt;section id="metadata">
&lt;h2 class="text-left heading">
Metadata
&lt;span class="header-filet">&lt;/span>
&lt;/h2>
&lt;p>Metadata (e.g. title, description) is free-format text that usually differs for each image. You can add metadata to images in the
&lt;a href="https://ansel.photos/en/doc/views/toolboxes/metadata-editor/" title="" rel="dofollow" >metadata editor&lt;/a> module.&lt;/p>
&lt;/section>
&lt;section id="tagging">
&lt;h2 class="text-left heading">
Tagging
&lt;span class="header-filet">&lt;/span>
&lt;/h2>
&lt;p>Tags are usually shared between multiple images and are used to categorise and group them. You can add tags to images in the
&lt;a href="https://ansel.photos/en/doc/views/toolboxes/tagging/" title="" rel="dofollow" >tagging&lt;/a> module.&lt;/p></description></item><item><title>Darkroom</title><link>https://ansel.photos/en/doc/views/darkroom/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>c512683a11708409f3f8d4b8b87cfa61ee541ce4c3fc8f44fd0275b47eda0df5</guid><description>&lt;p>The darkroom view is where you develop your images. The center panel contains the image currently being edited.&lt;/p>
&lt;/section>
&lt;section id="zoom">
&lt;h2 class="text-left heading">
Zoom
&lt;span class="header-filet">&lt;/span>
&lt;/h2>
&lt;p>Middle-click on the center panel cycle between &amp;ldquo;fit to screen&amp;rdquo;, 1:1 and 2:1 zoom.&lt;/p>
&lt;p>Alternatively you can zoom between 1:1 and &amp;ldquo;fit to screen&amp;rdquo; by scrolling with your mouse. Scroll while holding the Ctrl key to extend the zoom range to between 2:1 and 1:10.&lt;/p></description></item><item><title>Darkroom view layout</title><link>https://ansel.photos/en/doc/views/darkroom/darkroom-view-layout/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Thu, 12 Oct 2023 00:00:00 +0000</updated><guid>eadbb0fe90fda202903ecb86be7e163ec585c4bf1d2dde4b71ce40ffe84691a4</guid><description>&lt;/section>
&lt;section id="left-panel">
&lt;h2 class="text-left heading">
Left panel
&lt;span class="header-filet">&lt;/span>
&lt;/h2>
&lt;p>From top to bottom:&lt;/p>
&lt;dl>
&lt;dt>
&lt;a href="https://ansel.photos/en/doc/views/toolboxes/navigation/" title="" rel="dofollow" >navigation&lt;/a>&lt;/dt>
&lt;dd>Navigate and zoom the center view.&lt;/dd>
&lt;dt>
&lt;a href="https://ansel.photos/en/doc/views/toolboxes/snapshots/" title="" rel="dofollow" >snapshots&lt;/a>&lt;/dt>
&lt;dd>Take and view snapshots for comparison with the current edit.&lt;/dd>
&lt;dt>
&lt;a href="https://ansel.photos/en/doc/views/toolboxes/duplicate-manager/" title="" rel="dofollow" >duplicate manager&lt;/a>&lt;/dt>
&lt;dd>View and manage duplicates.&lt;/dd>
&lt;dt>
&lt;a href="https://ansel.photos/en/doc/views/toolboxes/global-color-picker/" title="" rel="dofollow" >global color picker&lt;/a>&lt;/dt>
&lt;dd>Select and display color information taken from parts of the image.&lt;/dd>
&lt;dt>
&lt;a href="https://ansel.photos/en/doc/views/toolboxes/image-information/" title="" rel="dofollow" >image information&lt;/a>&lt;/dt>
&lt;dd>Display information about the current image.&lt;/dd>
&lt;dt>
&lt;a href="https://ansel.photos/en/doc/views/toolboxes/mask-manager/" title="" rel="dofollow" >mask manager&lt;/a>&lt;/dt>
&lt;dd>View and edit drawn shapes.&lt;/dd>
&lt;/dl>
&lt;/section>
&lt;section id="right-panel">
&lt;h2 class="text-left heading">
Right panel
&lt;span class="header-filet">&lt;/span>
&lt;/h2>
&lt;p>From top to bottom:&lt;/p></description></item><item><title>The pixelpipe</title><link>https://ansel.photos/en/doc/views/darkroom/pixelpipe/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>3aa7c19d0fc4aa1db88ed78bdfbdbd757cb73bc01c46018fcbb46a9813b0d01d</guid><description/></item><item><title>The anatomy of a processing module</title><link>https://ansel.photos/en/doc/views/darkroom/pixelpipe/the-anatomy-of-a-module/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>78bbfe7bedfe8808465df5a409bb48e9376618b0e7e654918bdf311703e08d0f</guid><description>&lt;p>The basic element of image processing in Ansel is the
&lt;a href="https://ansel.photos/en/doc/views/darkroom/modules/" title="" rel="dofollow" >processing module&lt;/a>. In order to process a raw image a number of such modules act on the input image in sequence, each performing a different &lt;em>operation&lt;/em> on the image data. For those familiar with Adobe Photoshop, the concept of a &lt;em>processing module&lt;/em> in Ansel is analogous to that of an &lt;em>adjustment layer&lt;/em> in that both make an incremental adjustment to the image, building on top of the adjustments that came before.&lt;/p></description></item><item><title>The pixelpipe &amp; module order</title><link>https://ansel.photos/en/doc/views/darkroom/pixelpipe/the-pixelpipe-and-module-order/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>c082ca6fec65037a394f735fb12261a6bcdfeed2a7d5f2ae93cccb650153db3c</guid><description>&lt;p>The ordered sequence of
&lt;a href="https://ansel.photos/en/doc/views/darkroom/modules/" title="" rel="dofollow" >processing modules&lt;/a> operating on an input file to generate an output image is known as the &amp;ldquo;pixelpipe&amp;rdquo;.&lt;/p>
&lt;p>The order of the pixelpipe is represented graphically by the order in which modules are presented in the user interface &amp;ndash; the pixelpipe starts with a RAW image at the bottom of the module list, and applies the processing modules one by one, piling up layer upon layer of processing from the bottom up, until it reaches the top of the list, where it outputs the fully processed image.&lt;/p></description></item><item><title>The history stack</title><link>https://ansel.photos/en/doc/views/darkroom/pixelpipe/history-stack/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>97cf0621eb9597772452563fcf157e74f9e602181dfb7f5d1e3f293289de51fd</guid><description>&lt;p>The &lt;em>history stack&lt;/em> stores the entire editing history for a given image, in the order in which those edits were applied. It is saved to Ansel&amp;rsquo;s library database and the image&amp;rsquo;s XMP sidecar file and persists between editing sessions.&lt;/p>
&lt;p>Each time a processing module is enabled, disabled, moved or amended a new entry is added to the top of the &lt;em>history stack&lt;/em>.&lt;/p>
&lt;p>The history stack can be queried and modified within the
&lt;a href="https://ansel.photos/en/doc/views/toolboxes/history-stack/" title="" rel="dofollow" >history stack&lt;/a> module in the darkroom.&lt;/p></description></item><item><title>Undo and redo</title><link>https://ansel.photos/en/doc/views/darkroom/pixelpipe/undo-redo/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>1fb74fce3df5d71dc480eaf9f59f5bd654e4cc9b15aab0fbe251fd9bfd212938</guid><description>&lt;p>While you are editing your image, Ansel records all of the modifications you make to that image. This means that it is possible to undo and redo changes to recover a previous editing state. Note that the undo/redo facility is unlimited in the number of steps while editing an image, but is reset each time the darkroom is switched to a new image.&lt;/p>
&lt;p>Press Ctrl+Z to undo the last modification and Ctrl+Y to redo the last undone modification (if any).&lt;/p></description></item><item><title>Masking &amp; blending</title><link>https://ansel.photos/en/doc/views/darkroom/masking-and-blending/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>1c6c6ff7ab4c3798118502d9f76280dee16ce7afc3767b2a23b294f43d417f93</guid><description>&lt;p>Each processing module takes its input from the preceding module in the pixelpipe, performs its operation on the image data, and then hands the output to the next module in the pixelpipe.&lt;/p>
&lt;p>A module&amp;rsquo;s output data can optionally be reprocessed (combined) with its input data before being handed to the next module. This additional processing step is called &lt;em>blending&lt;/em> &amp;ndash; input and output data is reprocessed using algorithms called blending operators or
&lt;a href="https://ansel.photos/en/doc/views/darkroom/masking-and-blending/blend-modes/" title="" rel="dofollow" >blend modes&lt;/a>.&lt;/p></description></item><item><title>Blend modes</title><link>https://ansel.photos/en/doc/views/darkroom/masking-and-blending/blend-modes/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>8afcfe176808340969d74b4701a6c685309980f1c131b00c4ee422f554ad8d46</guid><description>&lt;p>Blend modes define how the input and output of a module are combined (blended) together before the module&amp;rsquo;s final output is passed to the next module in the pixelpipe.&lt;/p>
&lt;p>Classic blending modes, designed for display-referred RGB (constrained to 0-100%), implicitly define a fulcrum at 50% (gray) or 100% (white) in their algorithms, depending on the blend mode. Because scene-referred is not subject to these restrictions, this fulcrum needs to be explicitly defined by the user when performing blending operations in the &amp;ldquo;RGB (scene)&amp;rdquo; color space. The additional &lt;em>blend fulcrum&lt;/em> parameter will be presented to the user when using one of these blend modes in this color space. The effect depends on the operator used. For example, values above the fulcrum might be brightened and values below darkened, or vice versa.&lt;/p></description></item><item><title>Masks</title><link>https://ansel.photos/en/doc/views/darkroom/masking-and-blending/masks/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>50d34940baa3e727919f192149c37fe91182dfb4227e11ee3e985ab0aed4ad11</guid><description>&lt;p>Masks allow you to limit the effect of a module so that it only applies to certain parts of the image.&lt;/p>
&lt;p>A mask can be regarded as a grayscale image where each pixel has a value between 0 and 1.0 (or between 0% and 100%). This value is the &lt;em>opacity&lt;/em> and is used to determine how much a module affects each pixel.&lt;/p>
&lt;p>The following sections explain how to construct masks in Ansel.&lt;/p></description></item><item><title>Drawn masks</title><link>https://ansel.photos/en/doc/views/darkroom/masking-and-blending/masks/drawn/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>a4e7e37949b7b837fa2e8049583194c7cd9abcef869e17570fd5c97da5d1faa1</guid><description>&lt;p>With the drawn mask feature you can construct a mask by drawing shapes directly onto the image canvas. Shapes can be used alone or in combination. Once a shape has been drawn on an image it can be adjusted, removed, or reused in other modules.&lt;/p>
&lt;p>Shapes are stored internally as vectors and are rendered with the required resolution during pixelpipe processing. Shapes are expressed in the coordinate system of the original image and are transformed along with the rest of the image by any active distorting modules in the pipe (
&lt;a href="https://ansel.photos/en/doc/views/darkroom/modules/lens-correction/" title="" rel="dofollow" >&lt;em>lens correction&lt;/em>&lt;/a>,
&lt;a href="https://ansel.photos/en/doc/views/darkroom/modules/rotate-perspective/" title="" rel="dofollow" >&lt;em>rotate and perspective&lt;/em>&lt;/a> for example). This means that a shape will always work on the same image area regardless of any modifications that may be subsequently applied.&lt;/p></description></item><item><title>Parametric masks</title><link>https://ansel.photos/en/doc/views/darkroom/masking-and-blending/masks/parametric/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>6f9b779f5afc71efd43a18bc204d7425aa26b9196bd347d5d92e03f703c76268</guid><description>&lt;p>The parametric mask feature offers fine-grained selective control over how individual pixels are masked. It does this by automatically generating an intermediate blend mask from user-defined parameters. These parameters are color coordinates rather than the geometrical coordinates used in drawn masks.&lt;/p>
&lt;p>For each data channel of a module (e.g. Lab, RGB) and several virtual data channels (e.g. hue, saturation) you can construct a per-channel opacity function. Depending on each pixel&amp;rsquo;s value for a given data channel this function calculates a blending factor between 0 and 1 (100%) for that pixel.&lt;/p></description></item><item><title>Combining drawn &amp; parametric masks</title><link>https://ansel.photos/en/doc/views/darkroom/masking-and-blending/masks/drawn-and-parametric/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>8e8fc541d973f6fb3f3b0c666a8f4a5ef2a8dc89e3b837d2bf12731bbd646323</guid><description>&lt;p>Drawn and parametric masks can be used in combination to form a single mask that can be applied to a module.&lt;/p>
&lt;p>There are two main elements which control how individual masks are combined: the &lt;em>polarity&lt;/em> setting of each individual mask (defined by the plus or minus buttons) and the setting in the “combine masks” combobox.&lt;/p>
&lt;p>The &amp;ldquo;combine masks&amp;rdquo; combobox contains the following options, defining how the drawn and parametric masks will be combined:&lt;/p></description></item><item><title>Mask refinement &amp; additional controls</title><link>https://ansel.photos/en/doc/views/darkroom/masking-and-blending/masks/refinement-controls/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>f1cdb4ff7a072d5b4e460a98ac433a2fcde85bcc567792694a434f5d46d08c96</guid><description>&lt;p>When a parametric or drawn mask is active, several additional sliders are shown which allow the mask to be further refined.&lt;/p>
&lt;dl>
&lt;dt>details threshold&lt;/dt>
&lt;dd>This control allows you to alter the opacity of the mask based on the amount of detail in the image. Use this slider to select either areas with lots of detail (positive values) or areas that are flat and lacking in detail (negative values). The default (zero) effectively bypasses details refinement. This is mostly useful to apply sharpening and blurring effects that ignore out-of-focus (bokeh) regions or to sharpen only blurry parts, preventing over-sharpening of in-focus regions.&lt;/dd>
&lt;/dl>
&lt;hr />
&lt;p>&lt;strong>Note:&lt;/strong> The data used for the detail mask refinement is taken from the demosaic stage in the processing pipeline, and not from the module&amp;rsquo;s input (which is used for the other parametric mask criteria). None of the processing modules after demosaic will have any effect on the detail mask and it is not currently available for non-RAW images.&lt;/p></description></item><item><title>Raster masks</title><link>https://ansel.photos/en/doc/views/darkroom/masking-and-blending/masks/raster/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>b873ffef167e2cc85e8825c11cccfaa79b8db9b17b3259e2a2485186dcb17958</guid><description>&lt;p>As described in the previous sections, the final output of a module&amp;rsquo;s mask (the combined effect of any drawn and parameteric masks) is a grayscale raster image representing the extent to which the module&amp;rsquo;s effect should be applied to each pixel. This raster image is stored internally for active modules and can be subsequently reused by other modules in the pixelpipe.&lt;/p>
&lt;p>As with any mask, if the opacity value for a pixel in a raster mask is zero the module&amp;rsquo;s input passed through the module unchanged. If the opacity is 1.0 the module has its full effect. For each value between 0 and 1.0 the module&amp;rsquo;s effect is applied proportionally at that location.&lt;/p></description></item><item><title>Processing modules</title><link>https://ansel.photos/en/doc/views/darkroom/modules/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>f433f0be965e4e6822baab18920731d51d9cb055b5dfca7bee27f07c3b29655f</guid><description/></item><item><title>Split-toning RGB</title><link>https://ansel.photos/en/doc/views/darkroom/modules/split-toning-rgb/</link><pubDate>Fri, 03 Apr 2026 00:00:00 +0200</pubDate><updated>Fri, 03 Apr 2026 00:00:00 +0200</updated><guid>bae7076eb917c2828acb3f35a6552e7f4ede4daad61df0836caf990bdded0eae</guid><description>&lt;p>Blend two CAT16 plus RGB mixer corrections across brightness keyframes.&lt;/p>
&lt;p>The &lt;em>split-toning RGB&lt;/em> module applies two independent color transforms:&lt;/p>
&lt;ul>
&lt;li>one keyed on the dark tones,&lt;/li>
&lt;li>one keyed on the bright tones.&lt;/li>
&lt;/ul>
&lt;p>Each keyframe combines:&lt;/p>
&lt;ul>
&lt;li>a chromatic adaptation defined by a correlated color temperature in &lt;em>CAT16&lt;/em>,&lt;/li>
&lt;li>a 3×3 RGB channel mixer working in the pipeline working RGB space.&lt;/li>
&lt;/ul>
&lt;p>The two transforms are then interpolated according to the scene luminance of each pixel. This makes the module suitable both for creative split toning and for technical correction of mixed illuminants, for example cool bounce light in the shadows combined with a warmer direct illuminant in the highlights.&lt;/p></description></item><item><title>Color primaries</title><link>https://ansel.photos/en/doc/views/darkroom/modules/color-primaries/</link><pubDate>Wed, 01 Apr 2026 00:00:00 +0200</pubDate><updated>Wed, 01 Apr 2026 00:00:00 +0200</updated><guid>6c9bbeb346c486a0c7707c15215a08125a70896a6c6c2c6ef9af7f904998671d</guid><description>&lt;p>Edit RGB/CYM primary control nodes in dt UCS and remap colors through a procedural 3D LUT.&lt;/p>
&lt;p>The &lt;em>color primaries&lt;/em> module is a secondary color-grading tool built around the six additive and subtractive primaries:&lt;/p>
&lt;ul>
&lt;li>&lt;em>red&lt;/em>,&lt;/li>
&lt;li>&lt;em>yellow&lt;/em>,&lt;/li>
&lt;li>&lt;em>green&lt;/em>,&lt;/li>
&lt;li>&lt;em>cyan&lt;/em>,&lt;/li>
&lt;li>&lt;em>blue&lt;/em>,&lt;/li>
&lt;li>&lt;em>magenta&lt;/em>.&lt;/li>
&lt;/ul>
&lt;p>Each of these control nodes is sampled inside the internal RGB gamut and converted to &lt;em>dt UCS HSB&lt;/em>. The module lets you change the hue, saturation and brightness of those six reference colors, then interpolates the resulting RGB shifts through a cylindrical local field to build a dense 3D LUT.&lt;/p></description></item><item><title>Color equalizer</title><link>https://ansel.photos/en/doc/views/darkroom/modules/color-equalizer/</link><pubDate>Mon, 30 Mar 2026 00:00:00 +0200</pubDate><updated>Mon, 30 Mar 2026 00:00:00 +0200</updated><guid>ae42ed616299e8c718184cffd7cf259e4dd6ec523ab38d2950e4076287759448</guid><description>&lt;p>Remap colors through a procedural 3D LUT driven by perceptual hue-ring controls.&lt;/p>
&lt;p>The &lt;em>color equalizer&lt;/em> module is a secondary color-grading tool. It lets you define color shifts on three hue rings expressed in &lt;em>dt UCS HSB&lt;/em> space, then converts those shifts into a dense RGB 3D LUT that is applied to the image.&lt;/p>
&lt;p>The user interface is meant to stay perceptually even:&lt;/p>
&lt;ul>
&lt;li>The editable graphs work in &lt;em>hue&lt;/em>, &lt;em>saturation&lt;/em> and &lt;em>brightness&lt;/em> dimensions of &lt;em>dt UCS HSB&lt;/em>,&lt;/li>
&lt;li>The underlying LUT is built in RGB code values and applied as a 3D cube transform,&lt;/li>
&lt;li>The interpolation between user nodes is smooth and periodic over hue.&lt;/li>
&lt;/ul>
&lt;p>Because the final effect is applied through a 3D LUT, hue, saturation and brightness edits can interact in a more global way than in curve-only modules. This makes the module well suited to creative color remapping and palette design, but more robust across dramatic changes.&lt;/p></description></item><item><title>Photographic grain</title><link>https://ansel.photos/en/doc/views/darkroom/modules/photographic-grain/</link><pubDate>Mon, 23 Mar 2026 00:00:00 +0100</pubDate><updated>Mon, 23 Mar 2026 00:00:00 +0100</updated><guid>5c79b603cf78a9c84efd6d6e3a725fbefb9202b116ef2150eefd89f962e1f2ea</guid><description>&lt;p>Simulate photographic grain from a stochastic stack of silver-halide crystal layers.&lt;/p>
&lt;p>This module implements a production version of the model presented in &lt;a href="https://eng.aurelienpierre.com/2023/07/stochastic-photographic-grain-synthesis-from-crystallographic-structure-simulation/" title="External link" target="_blank" rel="noopener noreferrer nofollow" >Stochastic photographic grain synthesis from crystallographic structure simulation&amp;thinsp;&lt;sup class="icon">&lt;i class="fa fa-external-link-alt">&lt;/i>&lt;/sup>&lt;/a>. The goal is not to add generic noise, but to discretize the scene-referred image into finite crystal footprints that capture and deplete light through an emulsion stack.&lt;/p>
&lt;p>Unlike simple additive noise, the module works with crystal-shaped grains, a per-layer filling ratio, and a remaining-light model. Each crystal captures a flat tone averaged over its own footprint, so image detail finer than the grain size is not preserved inside the grain.&lt;/p></description></item><item><title>Drawing</title><link>https://ansel.photos/en/doc/views/darkroom/modules/drawing/</link><pubDate>Sun, 08 Mar 2026 00:00:00 +0100</pubDate><updated>Sun, 08 Mar 2026 00:00:00 +0100</updated><guid>9970b68bad2b49ba578bbca416b67f3db9085cec9a8c54076d6f4213d5f70abb</guid><description>&lt;p>Paint premultiplied RGBA layers directly in darkroom and save them as pages inside a TIFF sidecar.&lt;/p>
&lt;p>This module is a true painting layer system. It is not a local-adjustment mask editor and it is not a clone/heal tool like
&lt;a href="https://ansel.photos/en/doc/views/darkroom/modules/retouch/" title="" rel="dofollow" >retouch&lt;/a>. Instead, it creates and edits independent raster layers that are composited over the current image in the pixelpipe.&lt;/p>
&lt;p>The intended use cases are:&lt;/p>
&lt;ul>
&lt;li>Hand painting,&lt;/li>
&lt;li>Dodging and burning with a brush,&lt;/li>
&lt;li>Color glazing,&lt;/li>
&lt;li>Painterly overlays,&lt;/li>
&lt;li>Matte painting on top of a photograph,&lt;/li>
&lt;li>Texture painting,&lt;/li>
&lt;li>Soft masking or erasing with a pressure-sensitive tablet.&lt;/li>
&lt;/ul>
&lt;p>The TIFF sidecar is saved as 16 bits floating point, compressed losslessly, in scene-linear working RGB space (the colorspace ICC profile is included in the file), with premultiplied alpha. It can be modified in any software that supports this.&lt;/p></description></item><item><title>Final resampling</title><link>https://ansel.photos/en/doc/views/darkroom/modules/finalscale/</link><pubDate>Sat, 21 Jan 2023 00:00:00 +0000</pubDate><updated>Sat, 21 Jan 2023 00:00:00 +0000</updated><guid>61cffdb14a28b63684ffcc65d3dca9cc74bb5fa750adc2dcfd45966991b9eb09</guid><description>&lt;p>This module has always been in the pixel pipeline but was hidden in darktable GUI. Ansel 0.0 exposes it to allow users to fix a mistake in the default pipeline order of darktable.&lt;/p>
&lt;/section>
&lt;section id="action">
&lt;h2 class="text-left heading">
Action
&lt;span class="header-filet">&lt;/span>
&lt;/h2>
&lt;p>When exporting images to save them to a file, the picture is processed at full resolution and then rescaled to the specified output size by this module.&lt;/p>
&lt;p>&lt;em>Final resampling&lt;/em> is never used when producing previews, for the lighttable thumbnails or in the darkroom, because in this case images are resampled earlier in the pipeline, for better rendering speed. It has no effect if the image is exported at its full (original) resolution either.&lt;/p></description></item><item><title>Astrophoto denoise</title><link>https://ansel.photos/en/doc/views/darkroom/modules/astrophoto-denoise/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>d35bf872c562d13b08d17b079d14fefc62331c5155b9f8f3e91a76ff2943bf4e</guid><description>&lt;p>Remove image noise while preserving structure.&lt;/p>
&lt;p>This is accomplished by averaging each pixel with some surrounding pixels in the image. The weight of such a pixel in the averaging process depends on the similarity of its neighborhood with the neighborhood of the pixel being denoised. A patch with a defined size is used to measure that similarity.&lt;/p>
&lt;p>As denoising is a resource-intensive process, it slows down pixelpipe processing significantly. Consider activating this module late in your workflow.&lt;/p></description></item><item><title>Blurs</title><link>https://ansel.photos/en/doc/views/darkroom/modules/blurs/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>30d44668a73b4863cf45b2efc80ce828a02e318fc50c0f58da8b02c29becb03f</guid><description>&lt;p>Simulate physically-accurate blurs in scene-referred RGB space.&lt;/p>
&lt;/section>
&lt;section id="blur-types">
&lt;h2 class="text-left heading">
Blur types
&lt;span class="header-filet">&lt;/span>
&lt;/h2>
&lt;p>Three types of blur are provided:&lt;/p>
&lt;ol>
&lt;li>&lt;em>lens blur&lt;/em>: Simulates a lens diaphragm with a configurable number of blades and blade curvature to create synthetic bokeh.&lt;/li>
&lt;li>&lt;em>motion blur&lt;/em>: Simulates the effect of camera motion with a configurable path.&lt;/li>
&lt;li>&lt;em>gaussian blur&lt;/em>: This is not really an optical blur but can be used for denoising or for creative effects using
&lt;a href="https://ansel.photos/en/doc/views/darkroom/masking-and-blending/blend-modes/" title="" rel="dofollow" >blend modes&lt;/a>&lt;/li>
&lt;/ol>
&lt;p>A diagram at the top of the module shows the shape of the blurring operator (known as the &lt;a href="https://en.wikipedia.org/wiki/Point_spread_function" title="Wikipedia link" target="_blank" rel="noopener noreferrer nofollow" >&lt;em>point spread function&lt;/em>&amp;thinsp;&lt;sup class="icon">&lt;i class="fab fa-wikipedia-w">&lt;/i>&lt;/sup>&lt;/a>). The module will turn each luminous point from the scene into a blot shaped like the displayed blurring operator, with the size of the blot defined by the &lt;em>blur radius&lt;/em>.&lt;/p></description></item><item><title>Censorize</title><link>https://ansel.photos/en/doc/views/darkroom/modules/censorize/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>07e046b92385bba8d511c3470b0fb9da3374fce32164f767626c4c2113fa1df8</guid><description>&lt;p>Degrade parts of the image in an aesthetically pleasing way, in order to anonymize people/objects or hide body parts.&lt;/p>
&lt;p>Censorize works in linear RGB color space to apply a physically-accurate gaussian blur and gaussian luminance noise.&lt;/p>
&lt;p>Aside from anonymization, this module can also be used for a wide range of creative purposes, for example:&lt;/p>
&lt;ul>
&lt;li>Combine a simple blur with a multiply
&lt;a href="https://ansel.photos/en/doc/views/darkroom/masking-and-blending/blend-modes/" title="" rel="dofollow" >blend mode&lt;/a> to create a realistic bloom (Orton effect).&lt;/li>
&lt;li>Combine a simple blur with a subtract blending mode and low opacity to create an &lt;a href="https://en.wikipedia.org/wiki/Unsharp_masking" title="Wikipedia link" target="_blank" rel="noopener noreferrer nofollow" >unsharp mask&amp;thinsp;&lt;sup class="icon">&lt;i class="fab fa-wikipedia-w">&lt;/i>&lt;/sup>&lt;/a>, similar to the
&lt;a href="https://ansel.photos/en/doc/views/darkroom/modules/sharpen/" title="" rel="dofollow" >sharpen&lt;/a> module but in an RGB scene-referred space.&lt;/li>
&lt;li>Add noise to create artificial grain.&lt;/li>
&lt;/ul>
&lt;hr />
&lt;p>&lt;strong>Note:&lt;/strong> The anonymizing methods provided by this module are not forensically safe in order to favor aesthetics. Some forensic techniques may still be able to reconstruct the censorized content based on its structure, especially for simple shapes and text (e.g. license plates, street numbers).&lt;/p></description></item><item><title>Chromatic aberrations</title><link>https://ansel.photos/en/doc/views/darkroom/modules/chromatic-aberrations/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>c3a7ce264045b3c94b0d1463ef132783e98aeba85f2998ef792160b4892c11db</guid><description>&lt;p>Correct chromatic aberrations.&lt;/p>
&lt;p>In contrast to the
&lt;a href="https://ansel.photos/en/doc/views/darkroom/modules/raw-chromatic-aberrations/" title="" rel="dofollow" >&lt;em>raw chromatic aberrations&lt;/em>&lt;/a> module, this module does not require raw data as input.&lt;/p>
&lt;/section>
&lt;section id="workflow">
&lt;h2 class="text-left heading">
Workflow
&lt;span class="header-filet">&lt;/span>
&lt;/h2>
&lt;p>To obtain the best result, you are advised to proceed as follows:&lt;/p>
&lt;ol>
&lt;li>Attenuate the chromatic aberrations as much as possible in the
&lt;a href="https://ansel.photos/en/doc/views/darkroom/modules/lens-correction/" title="" rel="dofollow" >&lt;em>lens correction&lt;/em>&lt;/a> module using the TCA sliders.&lt;/li>
&lt;li>Increase the strength slider in this module to better see its effect.&lt;/li>
&lt;li>Increase the radius until the chromatic aberrations disappear. If this is insufficient, try enabling the &amp;ldquo;very large chromatic aberrations&amp;rdquo; setting.&lt;/li>
&lt;li>Choose the guide that gives the best result in term of sharpness and artifacts.&lt;/li>
&lt;li>Reduce the strength to avoid washing out the colors too much.&lt;/li>
&lt;/ol>
&lt;p>For more complicated cases you could also try the following:&lt;/p></description></item><item><title>Color balance rgb</title><link>https://ansel.photos/en/doc/views/darkroom/modules/color-balance-rgb/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>bb886df1952df83a05213c9db8faad4b5343ce66b03c8a71b5fc1003479e3fc0</guid><description>&lt;p>An advanced module which brings color-grading tools from cinematography into the photographic scene-referred pipeline.&lt;/p>
&lt;p>This module is not suitable for beginners with no prior knowledge of color theory, who might want to stick to the &lt;em>global chroma&lt;/em> and &lt;em>global vibrance&lt;/em> settings until they have a good understanding of the
&lt;a href="https://ansel.photos/en/doc/color-management/color-dimensions/" title="" rel="dofollow" >dimensions of color&lt;/a>.&lt;/p>
&lt;/section>
&lt;section id="introduction">
&lt;h2 class="text-left heading">
Introduction
&lt;span class="header-filet">&lt;/span>
&lt;/h2>
&lt;p>Color-grading is an important part of image editing. It can help to remove unwanted color casts and can also deliver a creative color twist that will add atmosphere to your images. In the days of film photography, most of the color ambiance was obtained with the film emulsion and the developing chemicals, with some color timing being performed under the enlarger with color heads. This consumed expensive resources and was mostly reserved for the cinema industry, where the job was performed by a colorist.&lt;/p></description></item><item><title>Color calibration</title><link>https://ansel.photos/en/doc/views/darkroom/modules/color-calibration/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Tue, 31 Mar 2026 00:00:00 +0000</updated><guid>7b34a0fce5b85c6786a700a4f182c17c4211e2f716b1fe67d1fc0b4a7489fecc</guid><description>&lt;p>A fully-featured color-space correction, white balance adjustment and channel mixer module.&lt;/p>
&lt;p>This simple yet powerful module can be used in the following ways:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>To adjust the white balance (&lt;a href="#white-balance-in-the-chromatic-adaptation-transformation-cat-tab" title="" rel="dofollow" >chromatic adaptation&lt;/a>), working in tandem with the
&lt;a href="https://ansel.photos/en/doc/views/darkroom/modules/white-balance/" title="" rel="dofollow" >&lt;em>white balance&lt;/em>&lt;/a> module. Here, the &lt;em>white balance&lt;/em> module makes some initial adjustments (required for the
&lt;a href="https://ansel.photos/en/doc/views/darkroom/modules/demosaic/" title="" rel="dofollow" >&lt;em>demosaic&lt;/em>&lt;/a> module to work effectively), and the &lt;em>color calibration&lt;/em> module then calculates a more perceptually-accurate white balance after the input color profile has been applied.&lt;/p></description></item><item><title>Color look up table</title><link>https://ansel.photos/en/doc/views/darkroom/modules/color-look-up-table/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>eb60ada65f029b1f31b6d7891a9a7a5183dbce593101089d736faaf81c0f0b62</guid><description>&lt;p>A generic color look up table implemented in Lab space.&lt;/p>
&lt;p>The input to this module is a list of source and target points and the complete mapping is interpolated using splines. The resulting look up tables (LUTs) are editable by hand and can be created using the darktable-chart utility to match given input (such as hald-cluts and RAW/JPEG with in-camera processing pairs).&lt;/p>
&lt;/section>
&lt;section id="module-controls">
&lt;h2 class="text-left heading">
Module controls
&lt;span class="header-filet">&lt;/span>
&lt;/h2>
&lt;dl>
&lt;dt>color board&lt;/dt>
&lt;dd>The color board grid shows a list of colored patches. The colors of the patches are the source points. The target color of the selected patch is shown as offsets which are controlled by sliders beneath the color board. An outline is drawn around patches that have been altered (where the source and target colors differ).&lt;/dd>
&lt;dd>
&lt;p>Click a patch to select it, or use the combo box or color picker. The currently-selected patch is marked with a white square, and its number is displayed in the combo box below.&lt;/p></description></item><item><title>Color reconstruction</title><link>https://ansel.photos/en/doc/views/darkroom/modules/color-reconstruction/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>3c7b9eaadfbe27bbf15d58c3ff64e0ad053e1a70337df1efecc311e93c3bc5bc</guid><description>&lt;p>Recover color information in blown-out highlights.&lt;/p>
&lt;p>Due to the nature of digital sensors, overexposed highlights lack valid color information. Most frequently they appear neutral white or exhibit some color cast, depending on what other image processing steps are involved. This module can be used to “heal” overexposed highlights by replacing their colors with better fitting ones. The module acts on pixels whose luminance exceeds a user-defined threshold. Replacement colors are taken from neighboring pixels. Both the spatial distance and the luminance distance (range) are taken into account for color selection.&lt;/p></description></item><item><title>Color zones</title><link>https://ansel.photos/en/doc/views/darkroom/modules/color-zones/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>bc5ee02476fd9a74bb1b98bee3df66f9f1432510f705e2a5529ca2d79d65bf4f</guid><description>&lt;p>Selectively adjust the lightness, saturation and hue of pixels based on their current lightness, saturation and hue.&lt;/p>
&lt;p>This module works in CIE LCh color space, which separates pixels into &lt;em>lightness&lt;/em>, chroma (&lt;em>saturation&lt;/em>) and &lt;em>hue&lt;/em> components. It allows you to manipulate the lightness, saturation and hue of targeted groups of pixels through the use of curves.&lt;/p>
&lt;p>You first need to choose whether you wish to adjust (select) pixels based on their lightness, saturation or hue. You can then use three curves, on their respective tabs, to adjust the lightness, saturation and hue of ranges of pixels selected via this method.&lt;/p></description></item><item><title>Contrast equalizer</title><link>https://ansel.photos/en/doc/views/darkroom/modules/contrast-equalizer/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>840bda47e685e2b2b641f52e235ef47cbbe811c990c3e8d5df0a501cc468413b</guid><description>&lt;p>Adjust luminance and chroma contrast in the wavelet domain.&lt;/p>
&lt;p>This versatile module can be used to achieve a variety of effects, including bloom, denoise, clarity, and local contrast enhancement.&lt;/p>
&lt;p>It works in the wavelets domain and its parameters can be tuned independently for each wavelet detail scale. The module operates in CIE LCh color space and so is able to treat luminosity and chromaticity independently.&lt;/p>
&lt;p>A number of presets are provided, which should help you to understand the capabilities of the module.&lt;/p></description></item><item><title>Crop</title><link>https://ansel.photos/en/doc/views/darkroom/modules/crop/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>21462f1dc217cc617a7de9ba39cb6403e872d02bb27d57f9984183fa0a4f3191</guid><description>&lt;p>Crop an image using on-screen guides.&lt;/p>
&lt;p>This module appears late in the pipeline, meaning that the full image can remain available for source spots in the
&lt;a href="https://ansel.photos/en/doc/views/darkroom/modules/retouch/" title="" rel="dofollow" >&lt;em>retouch&lt;/em>&lt;/a> module. For best results, you are advised to use the
&lt;a href="https://ansel.photos/en/doc/views/darkroom/modules/rotate-perspective/" title="" rel="dofollow" >&lt;em>rotate and perspective&lt;/em>&lt;/a> module to perform rotation and perspective correction (if required), and then perform final creative cropping with this module.&lt;/p>
&lt;p>Whenever this module is in focus, the full uncropped image will be shown, overlaid with crop handles and optional guiding lines.&lt;/p></description></item><item><title>Demosaic</title><link>https://ansel.photos/en/doc/views/darkroom/modules/demosaic/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>dddc50ff2fe194fbab8d48bd3fff17a246b558f2a260324d3db616411e96c464</guid><description>&lt;p>Control how raw files are demosaiced.&lt;/p>
&lt;/section>
&lt;section id="bayer-filters">
&lt;h2 class="text-left heading">
Bayer filters
&lt;span class="header-filet">&lt;/span>
&lt;/h2>
&lt;p>The sensor cells of a digital camera are not color-sensitive &amp;ndash; they are only able to record different levels of lightness. In order to obtain a color image, each cell is covered by a color filter (red, green or blue) that primarily passes light of that color. This means that each pixel of the raw image only contains information about a single color channel.&lt;/p></description></item><item><title>Denoise (profiled)</title><link>https://ansel.photos/en/doc/views/darkroom/modules/denoise-profiled/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>42c57d58145b073b88939fc5fd79a41a8aeabee6e5886d53870e7d60ff0268f0</guid><description>&lt;p>An easy to use and highly efficient denoise module, adapted to the individual noise profiles of a wide range of camera sensors.&lt;/p>
&lt;p>One issue with a lot of denoising algorithms is that they assume that the variance of the noise is independent of the luminosity of the signal. By profiling the noise characteristics of a camera&amp;rsquo;s sensor at different ISO settings, the variance at different luminosities can be assessed, and the denoising algorithm can be adjusted to more evenly smooth out the noise.&lt;/p></description></item><item><title>Diffuse or sharpen</title><link>https://ansel.photos/en/doc/views/darkroom/modules/diffuse/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>4aa8323689e80e489935f35da753ec9ae1a7399d5e75c3b0da1d77806cb2e19c</guid><description>&lt;p>Diffusion is a family of physical processes by which particles move and spread gradually with time, from a source that generates them. In image processing, diffusion mostly occurs in two places:&lt;/p>
&lt;ul>
&lt;li>Diffusion of photons through lens glass (blur) or humid air (hazing),&lt;/li>
&lt;li>Diffusion of pigments in wet inks or watercolors.&lt;/li>
&lt;/ul>
&lt;p>In both cases, diffusion makes the image less sharp by &amp;ldquo;leaking&amp;rdquo; particles and smoothing local variations.&lt;/p>
&lt;p>The &lt;em>diffuse or sharpen&lt;/em> module uses a generalized physical model to describe several kinds of diffusion, and can be used by image makers to either simulate or revert diffusion processes.&lt;/p></description></item><item><title>Dithering</title><link>https://ansel.photos/en/doc/views/darkroom/modules/dithering/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>9a5b4c004401cbe7bec50c7d49b61230be9191698ba40ccebb11d7bc8e8afce6</guid><description>&lt;p>This module eliminates some of the banding artifacts that can result when Ansel&amp;rsquo;s internal 32-bit floating point data is transferred into discrete 8-bit or 16-bit integer output format for display or export.&lt;/p>
&lt;p>Although not an inherent problem in any of Ansel&amp;rsquo;s modules, some operations may provoke banding if they produce a lightness gradient in the image. To mitigate possible artifacts you should consider activating dithering when using the
&lt;a href="https://ansel.photos/en/doc/views/darkroom/modules/vignetting/" title="" rel="dofollow" >&lt;em>vignetting&lt;/em>&lt;/a> or
&lt;a href="https://ansel.photos/en/doc/views/darkroom/modules/graduated-density/" title="" rel="dofollow" >&lt;em>graduated density&lt;/em>&lt;/a> modules. This is especially relevant for images with extended homogeneous areas such as cloudless sky. Also watch out for banding artifacts when using a gradient
&lt;a href="https://ansel.photos/en/doc/views/darkroom/masking-and-blending/masks/drawn/" title="" rel="dofollow" >drawn mask&lt;/a>.&lt;/p></description></item><item><title>Exposure</title><link>https://ansel.photos/en/doc/views/darkroom/modules/exposure/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>e229c10c19ca9b3db2a0fc66f1cf26b50582513c47102de1a2d6bc79c26f2f8b</guid><description>&lt;p>Increase or decrease the overall brightness of an image.&lt;/p>
&lt;p>This module has two modes of operation:&lt;/p>
&lt;dl>
&lt;dt>manual&lt;/dt>
&lt;dd>Set the &lt;em>exposure&lt;/em>, &lt;em>black level&lt;/em> and &lt;em>clipping threshold&lt;/em> manually&lt;/dd>
&lt;dt>automatic (RAW images only)&lt;/dt>
&lt;dd>Use an analysis of the image&amp;rsquo;s histogram to automatically set the exposure. Ansel automatically selects the exposure compensation that is required to shift the selected &lt;em>percentile&lt;/em> to the selected &lt;em>target level&lt;/em> (see definitions below). This mode is particularly useful for automatically altering a large number of images to have the same exposure. A typical use case of automatic mode is deflickering of time-lapse photographs.&lt;/dd>
&lt;/dl>
&lt;/section>
&lt;section id="module-controls">
&lt;h2 class="text-left heading">
Module controls
&lt;span class="header-filet">&lt;/span>
&lt;/h2>
&lt;dl>
&lt;dt>mode&lt;/dt>
&lt;dd>Choose the mode of operation (automatic/manual).&lt;/dd>
&lt;dt>compensate camera exposure (manual mode)&lt;/dt>
&lt;dd>Automatically remove the camera exposure bias (taken from the image&amp;rsquo;s Exif data).&lt;/dd>
&lt;dt>exposure (manual mode)&lt;/dt>
&lt;dd>Increase (move to the right) or decrease (move to the left) the exposure value (EV). To adjust by more than the default limits shown on the slider, right click and enter the desired value up to +/-18 EV.&lt;/dd>
&lt;dd>The color picker tool on the right sets the exposure such that the average of the selected region matches the target lightness defined in &lt;a href="#spot-exposure-mapping" title="" rel="dofollow" >spot exposure mapping&lt;/a> options.&lt;/dd>
&lt;dt>clipping threshold (manual mode)&lt;/dt>
&lt;dd>Define what percentage of bright values are to be clipped in the calculation of the &lt;em>exposure&lt;/em> and &lt;em>black level correction&lt;/em>. Use the color picker to sample a portion of the image to be used for this calcuation.&lt;/dd>
&lt;dt>percentile (automatic mode)&lt;/dt>
&lt;dd>Define a location in the histogram to use for automatic exposure correction. A percentile of 50% denotes a position in the histogram where 50% of pixel values are above and 50% of pixel values are below that exposure.&lt;/dd>
&lt;dt>target level (automatic mode)&lt;/dt>
&lt;dd>Define the target level for automatic exposure correction (EV) relative to the white point of the camera.&lt;/dd>
&lt;dt>black level correction (manual and automatic modes)&lt;/dt>
&lt;dd>Adjust the black level point to unclip negative RGB values.&lt;/dd>
&lt;/dl>
&lt;hr />
&lt;p>&lt;strong>Note:&lt;/strong> Do not use the black level correction to add more density in blacks as this can clip near-black colors out of gamut by generating negative RGB values. This can cause problems with some modules later in the pixelpipe. Instead, use a tone mapping curve to add density to the blacks. For example, you can use the &lt;em>relative black exposure&lt;/em> slider on the &lt;em>scene&lt;/em> tab of the
&lt;a href="https://ansel.photos/en/doc/views/darkroom/modules/filmic-rgb/#scene" title="" rel="dofollow" >filmic rgb&lt;/a> module.&lt;/p></description></item><item><title>Filmic rgb</title><link>https://ansel.photos/en/doc/views/darkroom/modules/filmic-rgb/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>89f7298334fa62f37de25ac1b14bbe86a55b829b725262d4259898e34818dca8</guid><description>&lt;p>Remap the tonal range of an image by reproducing the tone and color response of classic film.&lt;/p>
&lt;p>This module can be used either to expand or to contract the dynamic range of the scene to fit the dynamic range of the display. It protects colors and contrast in the mid-tones, recovers the shadows, and compresses bright highlights and dark shadows. Highlights will need extra care when details need to be preserved (e.g. clouds).&lt;/p></description></item><item><title>Framing</title><link>https://ansel.photos/en/doc/views/darkroom/modules/framing/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>47467f2c7e4a051892f2b0d9aea54f697ec2f8b703f7d3aab4550d64c13596ab</guid><description>&lt;p>Generate a frame around the image.&lt;/p>
&lt;p>The frame consists of a border (with a user-defined color) and a frame line within that border (with a second user-defined color). Various options are available to control the geometry and color of the frame.&lt;/p>
&lt;/section>
&lt;section id="module-controls">
&lt;h2 class="text-left heading">
Module controls
&lt;span class="header-filet">&lt;/span>
&lt;/h2>
&lt;dl>
&lt;dt>border size&lt;/dt>
&lt;dd>The size of the frame as a percentage of the underlying full image.&lt;/dd>
&lt;dt>aspect&lt;/dt>
&lt;dd>The aspect ratio of the final module output (i.e. the underlying image plus the frame)&lt;/dd>
&lt;dt>orientation&lt;/dt>
&lt;dd>The orientation of the frame (portrait/landscape). Select &amp;lsquo;auto&amp;rsquo; for Ansel to choose the most reasonable orientation based on the underlying image.&lt;/dd>
&lt;dt>horizontal/vertical position&lt;/dt>
&lt;dd>Select from a set of pre-defined ratios to control where the underlying image will be positioned on the horizontal/vertical axis. You can also right click and enter your own ratio as &amp;ldquo;x/y&amp;rdquo;.&lt;/dd>
&lt;dt>frame line size&lt;/dt>
&lt;dd>The percentage of the frame line size, relative to the border size at its smallest part.&lt;/dd>
&lt;dt>frame line offset&lt;/dt>
&lt;dd>The position of the frame line, relative to the underlying image. Choose 0% for a frame line that touches the image. Choose 100% for a frame line that touches the outer border.&lt;/dd>
&lt;dt>border color / frame line color&lt;/dt>
&lt;dd>A pair of color selectors which allow the border and frame line colors to be defined. Clicking on the colored field will open a color selector dialog which offers a choice of commonly-used colors, or allows you to define a color in RGB color space. You can also activate a color picker to take a color probe from the image.&lt;/dd>
&lt;dt>show guides&lt;/dt>
&lt;dd>Tick the box to show guide overlays whenever the module is activated. Click the icon on the right to control the properties of the guides. See
&lt;a href="https://ansel.photos/en/doc/views/toolboxes/guides-overlays/" title="" rel="dofollow" >guides &amp;amp; overlays&lt;/a> for details.&lt;/dd>
&lt;/dl></description></item><item><title>Graduated density</title><link>https://ansel.photos/en/doc/views/darkroom/modules/graduated-density/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>6b867a472aa0c7ba316d551ce7c23c8702e65f8afd2c8586eae4d589e92d07c5</guid><description>&lt;p>Simulate a graduated density filter in order to correct exposure and color in a progressive manner.&lt;/p>
&lt;p>A line is shown on screen allowing the position and rotation of the gradient to be modified with the mouse.&lt;/p>
&lt;p>This module is known to provoke banding artifacts under certain conditions. You should consider activating the
&lt;a href="https://ansel.photos/en/doc/views/darkroom/modules/dithering/" title="" rel="dofollow" >&lt;em>dithering&lt;/em>&lt;/a> module to alleviate these issues.&lt;/p>
&lt;/section>
&lt;section id="module-controls">
&lt;h2 class="text-left heading">
Module controls
&lt;span class="header-filet">&lt;/span>
&lt;/h2>
&lt;dl>
&lt;dt>density&lt;/dt>
&lt;dd>Set the density of the filter (EV). A low value underexposes slightly whereas a high value creates a strong filter.&lt;/dd>
&lt;dt>hardness&lt;/dt>
&lt;dd>The progressiveness of the gradient. A low value creates a smooth transition, whereas a high value makes the transition more abrupt.&lt;/dd>
&lt;dt>rotation&lt;/dt>
&lt;dd>The rotation of the filter. Negative values rotate clockwise. The rotation can also be set by dragging the end of the gradient line with the mouse.&lt;/dd>
&lt;dt>hue&lt;/dt>
&lt;dd>Choose a hue to add a color cast to the gradient.&lt;/dd>
&lt;dt>saturation&lt;/dt>
&lt;dd>The saturation of the color cast to add to the gradient (defaults to a neutral color cast of 0)&lt;/dd>
&lt;/dl></description></item><item><title>Grain</title><link>https://ansel.photos/en/doc/views/darkroom/modules/grain/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>495ca069a6db51394bef7374b50f04b3b12eeb530819f07dee1e1905f8560a49</guid><description>&lt;p>Simulate the grain of analog film. The grain is processed on the L channel of Lab color space.&lt;/p>
&lt;/section>
&lt;section id="module-controls">
&lt;h2 class="text-left heading">
Module controls
&lt;span class="header-filet">&lt;/span>
&lt;/h2>
&lt;dl>
&lt;dt>coarseness&lt;/dt>
&lt;dd>The grain size, scaled to simulate an ISO number.&lt;/dd>
&lt;dt>strength&lt;/dt>
&lt;dd>The strength of the effect.&lt;/dd>
&lt;/dl></description></item><item><title>Haze removal</title><link>https://ansel.photos/en/doc/views/darkroom/modules/haze-removal/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>31f2bf95bbdc3347192772fe4194ac3a13b981d7777dbda1c4815e45707645e2</guid><description>&lt;p>Automatically reduce the effect of dust and haze in the atmosphere. This module may also be employed more generally to give pictures a color boost specifically in low-contrast regions of the image.&lt;/p>
&lt;p>Haze absorbs light from objects in the scene but it is also a source of diffuse background light. The haze removal module first estimates, for each image region, the amount of haze in the scene. It then removes the diffuse background light according to its local strength and recovers the original object light.&lt;/p></description></item><item><title>Highlight reconstruction</title><link>https://ansel.photos/en/doc/views/darkroom/modules/highlight-reconstruction/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>c6b05609ee8110ae8577212677a49b28d495ec228b6279319fe85732c2fafb2e</guid><description>&lt;p>Attempt to reconstruct color information for pixels that are clipped in one or more RGB channel.&lt;/p>
&lt;p>If these pixels are left partially clipped it can result in unrealistic colors appearing in the image. For example pixels with both green and blue channels clipped will appear to be red without any highlight reconstruction.&lt;/p>
&lt;p>Three methods of reconstruction are available:&lt;/p>
&lt;dl>
&lt;dt>clip highlights&lt;/dt>
&lt;dd>Clamp all pixels to the white level (i.e. clip the remaining color channels). This method is most useful in cases where clipped highlights occur in naturally desaturated objects (e.g. clouds).&lt;/dd>
&lt;dt>reconstruct in LCh&lt;/dt>
&lt;dd>Analyse each pixel with at least one clipped channel and attempt to correct the clipped pixel (in LCh color space) using the values of the other (3 for Bayer or 8 for X-Trans) pixels in the affected sensor block. The reconstructed highlights will still be monochrome, but brighter and with more detail than with “clip highlights”. This method works fairly well with a high-contrast base curve, which renders highlights desaturated. As with &lt;em>clip highlights&lt;/em> this method is a good option for naturally desaturated objects.&lt;/dd>
&lt;dt>reconstruct color&lt;/dt>
&lt;dd>Use an algorithm that transfers color information from unclipped surroundings into the clipped highlights. This method works very well on areas with homogeneous colors and is especially useful on skin tones with smoothly fading highlights. Please note that this method can produce maze-like artifacts on highlights behind high-contrast edges, for example well-exposed fine structures in front of an overexposed background.&lt;/dd>
&lt;dt>guided laplacians&lt;/dt>
&lt;dd>Use an algorithm (derived from the
&lt;a href="https://ansel.photos/en/doc/views/darkroom/modules/diffuse/" title="" rel="dofollow" >&lt;em>diffuse or sharpen&lt;/em>&lt;/a> module) to replicate details from valid channels into clipped channels and to propagate color gradients from valid surrounding regions into clipped regions. This is a slow and computationally-intensive method designed for maximum smoothness and seamless blending of the reconstructed regions into their neighborhood, and is designed primarily to reconstruct spotlights and specular reflections. This mode is available for Bayer sensors only.&lt;/dd>
&lt;/dl>
&lt;hr />
&lt;p>&lt;strong>Note:&lt;/strong> When using the highlight reconstruction included with the
&lt;a href="https://ansel.photos/en/doc/views/darkroom/modules/filmic-rgb/" title="" rel="dofollow" >&lt;em>filmic rgb&lt;/em>&lt;/a> module it may be useful to avoid using this module in &lt;em>clip highlights&lt;/em> mode (so that &lt;em>filmic rgb&lt;/em> has more information to work with).&lt;/p></description></item><item><title>Hot pixels</title><link>https://ansel.photos/en/doc/views/darkroom/modules/hot-pixels/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>985b2f5a124813471bbd05bfaffa03c6d7dc17f745213f282acdd5858b713745</guid><description>&lt;p>Automatically detect and eliminate hot pixels.&lt;/p>
&lt;p>Hot pixels are pixels which have failed to record a light level correctly. Detected hot pixels are replaced by an average of their neighbors.&lt;/p>
&lt;/section>
&lt;section id="module-controls">
&lt;h2 class="text-left heading">
Module controls
&lt;span class="header-filet">&lt;/span>
&lt;/h2>
&lt;dl>
&lt;dt>threshold&lt;/dt>
&lt;dd>How strong a pixel&amp;rsquo;s value needs to deviate from that of its neighbors to be regarded as a hot pixel.&lt;/dd>
&lt;dt>strength&lt;/dt>
&lt;dd>The blending strength of the hot pixels with their surrounding.&lt;/dd>
&lt;dt>detect by 3 neighbours&lt;/dt>
&lt;dd>Extend the detection of hot pixels &amp;ndash; regard a pixel as hot if a minimum of only three (instead of four) neighbor pixels deviate by more than the threshold level.&lt;/dd>
&lt;dt>mark fixed pixels&lt;/dt>
&lt;dd>Visually mark the corrected pixels on the image and display a count of hot pixels that have been fixed.&lt;/dd>
&lt;/dl></description></item><item><title>Input color profile</title><link>https://ansel.photos/en/doc/views/darkroom/modules/input-color-profile/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>b398e756fc6c745b391733206d8d077f5715ab8f8d0e9a53c3691514cc6c34fc</guid><description>&lt;p>Define how Ansel will interpret the colors of the image.&lt;/p>
&lt;p>This module takes the color space used by the image source (e.g. camera, scanner) and converts the pixel encodings to a standardized working color space. This means that subsequent modules in the pipeline don&amp;rsquo;t need to be concerned with the specifics of the input device, and can work with and convert to/from a common working color space.&lt;/p>
&lt;p>Where an image has been captured in a raw file, the input color profile module will normally apply either a standard or enhanced color matrix specific for that camera model, which will be used to map the colors into the working profile color space. If color space information is embedded in the image, the &lt;em>input color profile&lt;/em> module will use this information when mapping the colors to the working profile color space. The user can also explicitly specify a color space for the incoming image, and can even supply a custom ICC color profile specifically made for the input device.&lt;/p></description></item><item><title>Lens correction</title><link>https://ansel.photos/en/doc/views/darkroom/modules/lens-correction/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>1cfb1f65bb0cc403529be80249b4dbdaed926f1fe0dea8f4f5fc3921074f2395</guid><description>&lt;p>Automatically correct for (and simulate) lens distortion, transversal chromatic aberrations (TCA) and vignetting.&lt;/p>
&lt;p>This module identifies the camera/lens combination from the image&amp;rsquo;s Exif data and uses the external &lt;a href="https://lensfun.github.io/" title="External link" target="_blank" rel="noopener noreferrer nofollow" >lensfun library&amp;thinsp;&lt;sup class="icon">&lt;i class="fa fa-external-link-alt">&lt;/i>&lt;/sup>&lt;/a> to provide correction parameters.&lt;/p>
&lt;p>If your system&amp;rsquo;s lensfun library has no correction profile for the automatically identified camera/lens combination, the controls for the three photometric parameters (below) are replaced with a warning message. You may try to find the right profile yourself by searching for it in the menu.&lt;/p></description></item><item><title>Liquify</title><link>https://ansel.photos/en/doc/views/darkroom/modules/liquify/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>a77d80ee443610abd4b51f2016c296b6529077c5874961bf3404ef4f5d1af596</guid><description>&lt;p>Move pixels around by applying freestyle distortions to parts of the image using points, lines and curves.&lt;/p>
&lt;/section>
&lt;section id="nodes">
&lt;h2 class="text-left heading">
Nodes
&lt;span class="header-filet">&lt;/span>
&lt;/h2>
&lt;p>Each of liquify&amp;rsquo;s tools is based on nodes. A point consists of a single node and a line or curve consists of a sequence of linked nodes defining a path.&lt;/p>
&lt;p>Each instance of the liquify module is limited to a maximum of 100 nodes &amp;ndash; for more nodes, use additional instances. However, please note that the liquify module consumes a lot of system resources.&lt;/p></description></item><item><title>Local contrast</title><link>https://ansel.photos/en/doc/views/darkroom/modules/local-contrast/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>8d0b64ddc7fa1a569f1b58d69d910ff63d1825c09a5985517dc2b9a9cd49643c</guid><description>&lt;p>Enhance the image&amp;rsquo;s local contrast.&lt;/p>
&lt;p>This is achieved using either a &lt;em>local laplacian&lt;/em> (default) or &lt;em>unnormalized bilateral&lt;/em> filter. Both modes work exclusively on the L channel from Lab. The &lt;em>local laplacian&lt;/em> filter has been designed to be robust against unwanted halo effects and gradient reversals along edges.&lt;/p>
&lt;/section>
&lt;section id="module-controls">
&lt;h2 class="text-left heading">
Module controls
&lt;span class="header-filet">&lt;/span>
&lt;/h2>
&lt;dl>
&lt;dt>mode&lt;/dt>
&lt;dd>Choice of &lt;em>local laplacian&lt;/em> filter or &lt;em>bilateral grid&lt;/em>. The following sections define the controls available for each of these modes.&lt;/dd>
&lt;/dl>
&lt;/section>
&lt;section id="bilateral-grid">
&lt;h3 class="text-left heading">
Bilateral grid
&lt;/h3>
&lt;dl>
&lt;dt>coarseness&lt;/dt>
&lt;dd>Adjust the coarseness of the details to be adjusted.&lt;/dd>
&lt;dt>contrast&lt;/dt>
&lt;dd>Control how strongly the algorithm distinguishes between brightness levels. Increase this parameter for a more contrasty look.&lt;/dd>
&lt;dt>detail&lt;/dt>
&lt;dd>Add or remove detail. Higher values increase local contrast.&lt;/dd>
&lt;/dl>
&lt;/section>
&lt;section id="local-laplacian">
&lt;h3 class="text-left heading">
Local laplacian
&lt;/h3>
&lt;p>To understand the parameters of the local laplacian filter, one can think of it as applying a curve to the image, similar to the following graph:&lt;/p></description></item><item><title>Lut 3D</title><link>https://ansel.photos/en/doc/views/darkroom/modules/lut-3d/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>e46141aa17aee2ca87461aaa39d6e441e9e92a2c6311fcd4dbaea1b028cef362</guid><description>&lt;p>Transform RGB values with a 3D LUT file.&lt;/p>
&lt;p>A 3D LUT is a tridimensional table that is used to transform a given RGB value into another RGB value. It is normally used for film simulation and color grading.&lt;/p>
&lt;p>This module accepts &lt;code>.cube&lt;/code>, &lt;code>.3dl&lt;/code>, &lt;code>.png&lt;/code> (haldclut) and &lt;code>.gmz&lt;/code> files. Uncompressed 3D LUT data is not saved in the database or the XMP file, but is instead saved to the 3D LUT file path inside the 3D LUT root folder. It is therefore important to back up your 3D LUT folder properly &amp;ndash; sharing an image with its XMP is pointless if the recipient doesn&amp;rsquo;t also have the same 3D LUT file in their own 3D LUT folder.&lt;/p></description></item><item><title>Negadoctor</title><link>https://ansel.photos/en/doc/views/darkroom/modules/negadoctor/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>27c7f5f2333e69637f57c5c3e14832a6cc5c42aa9d183e1f91f8c046a4a7361e</guid><description>&lt;p>Process scanned film negatives.&lt;/p>
&lt;p>You can obtain an image of a negative using a film scanner, or by photographing it against a white light (e.g. a light table or computer monitor) or off-camera flash.&lt;/p>
&lt;/section>
&lt;section id="preparation">
&lt;h2 class="text-left heading">
Preparation
&lt;span class="header-filet">&lt;/span>
&lt;/h2>
&lt;p>If the image of the negative was obtained using a digital camera, then in order to obtain accurate colors in the final image, you will need to take the following points into consideration:&lt;/p></description></item><item><title>Orientation</title><link>https://ansel.photos/en/doc/views/darkroom/modules/orientation/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>7d6d395faded2ae2481f9853ae9600d658242ed5132e687b3149b2503501af7b</guid><description>&lt;p>Rotate the image 90 degrees at a time or flip the image horizontally and/or vertically.&lt;/p>
&lt;p>The module is enabled by default and the orientation (rotation) is automatically set based on the image&amp;rsquo;s Exif data.&lt;/p>
&lt;/section>
&lt;section id="module-controls">
&lt;h2 class="text-left heading">
Module controls
&lt;span class="header-filet">&lt;/span>
&lt;/h2>
&lt;dl>
&lt;dt>transform&lt;/dt>
&lt;dd>Double click the label to reset to the default transformations&lt;/dd>
&lt;dt>
&lt;figure class="img-wrapper " id="rotate-counter-clockwisejpg">
&lt;button class="open-lightbox-button" onclick="lightbox(&amp;#34;rotate-counter-clockwisejpg&amp;#34;)">
&lt;i class="fa fa-expand-alt open-lightbox-icon fa-fw">&lt;/i>
&lt;/button>
&lt;button class="open-link-button" onclick="window.open('https:\/\/ansel.photos\/rotate-counter-clockwise.jpg', '_blank');">
&lt;i class="fa fa-external-link-alt open-link-icon fa-fw">&lt;/i>
&lt;/button>
&lt;div class="img-container" onclick="lightbox(&amp;#34;rotate-counter-clockwisejpg&amp;#34;)" style="cursor: pointer;" >
&lt;img src=https://ansel.photos/rotate-counter-clockwise.jpg alt="image"
style=" "
decoding="async" loading="lazy"width="31" height="30"/>
&lt;/div>
&lt;/figure>
rotate counter-clockwise&lt;/dt>
&lt;dd>Rotate the image 90 degrees counter-clockwise&lt;/dd>
&lt;dt>
&lt;figure class="img-wrapper " id="rotate-clockwisejpg">
&lt;button class="open-lightbox-button" onclick="lightbox(&amp;#34;rotate-clockwisejpg&amp;#34;)">
&lt;i class="fa fa-expand-alt open-lightbox-icon fa-fw">&lt;/i>
&lt;/button>
&lt;button class="open-link-button" onclick="window.open('https:\/\/ansel.photos\/rotate-clockwise.jpg', '_blank');">
&lt;i class="fa fa-external-link-alt open-link-icon fa-fw">&lt;/i>
&lt;/button>
&lt;div class="img-container" onclick="lightbox(&amp;#34;rotate-clockwisejpg&amp;#34;)" style="cursor: pointer;" >
&lt;img src=https://ansel.photos/rotate-clockwise.jpg alt="image"
style=" "
decoding="async" loading="lazy"width="31" height="30"/>
&lt;/div>
&lt;/figure>
rotate clockwise&lt;/dt>
&lt;dd>Rotate the image 90 degrees clockwise&lt;/dd>
&lt;dt>
&lt;figure class="img-wrapper " id="flip-horizontaljpg">
&lt;button class="open-lightbox-button" onclick="lightbox(&amp;#34;flip-horizontaljpg&amp;#34;)">
&lt;i class="fa fa-expand-alt open-lightbox-icon fa-fw">&lt;/i>
&lt;/button>
&lt;button class="open-link-button" onclick="window.open('https:\/\/ansel.photos\/flip-horizontal.jpg', '_blank');">
&lt;i class="fa fa-external-link-alt open-link-icon fa-fw">&lt;/i>
&lt;/button>
&lt;div class="img-container" onclick="lightbox(&amp;#34;flip-horizontaljpg&amp;#34;)" style="cursor: pointer;" >
&lt;img src=https://ansel.photos/flip-horizontal.jpg alt="image"
style=" "
decoding="async" loading="lazy"width="41" height="36"/>
&lt;/div>
&lt;/figure>
flip horizontally&lt;/dt>
&lt;dd>Flip the image (mirror) horizontally&lt;/dd>
&lt;dt>
&lt;figure class="img-wrapper " id="flip-verticaljpg">
&lt;button class="open-lightbox-button" onclick="lightbox(&amp;#34;flip-verticaljpg&amp;#34;)">
&lt;i class="fa fa-expand-alt open-lightbox-icon fa-fw">&lt;/i>
&lt;/button>
&lt;button class="open-link-button" onclick="window.open('https:\/\/ansel.photos\/flip-vertical.jpg', '_blank');">
&lt;i class="fa fa-external-link-alt open-link-icon fa-fw">&lt;/i>
&lt;/button>
&lt;div class="img-container" onclick="lightbox(&amp;#34;flip-verticaljpg&amp;#34;)" style="cursor: pointer;" >
&lt;img src=https://ansel.photos/flip-vertical.jpg alt="image"
style=" "
decoding="async" loading="lazy"width="37" height="38"/>
&lt;/div>
&lt;/figure>
flip vertically&lt;/dt>
&lt;dd>Flip the image (mirror) vertically&lt;/dd>
&lt;dt>show guides&lt;/dt>
&lt;dd>Tick the box to show guide overlays whenever the module is activated. Click the icon on the right to control the properties of the guides. See
&lt;a href="https://ansel.photos/en/doc/views/toolboxes/guides-overlays/" title="" rel="dofollow" >guides &amp;amp; overlays&lt;/a> for details.&lt;/dd>
&lt;/dl></description></item><item><title>Output color profile</title><link>https://ansel.photos/en/doc/views/darkroom/modules/output-color-profile/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>ef8ddd87dbe3eb79a59c1baad4e0dc153ddc4c9b6b977212a6720b8aa5d5eff1</guid><description>&lt;p>Manage the output profile for export and the rendering intent to be used when mapping between color spaces.&lt;/p>
&lt;p>Ansel comes with pre-defined profiles &lt;em>sRGB&lt;/em>, &lt;em>Adobe RGB&lt;/em>, &lt;em>XYZ&lt;/em> and &lt;em>linear RGB&lt;/em>. You can provide additional profiles by placing them in &lt;code>$Ansel/share/Ansel/color/out&lt;/code> and &lt;code>$HOME/.config/Ansel/color/out&lt;/code> (where &lt;code>$Ansel&lt;/code> is the Ansel installation directory and &lt;code>$HOME&lt;/code> is your home directory).&lt;/p>
&lt;p>The output color profile may also be defined within the
&lt;a href="https://ansel.photos/en/doc/views/toolboxes/export/" title="" rel="dofollow" >export&lt;/a> module.&lt;/p>
&lt;/section>
&lt;section id="module-controls">
&lt;h2 class="text-left heading">
Module controls
&lt;span class="header-filet">&lt;/span>
&lt;/h2>
&lt;dl>
&lt;dt>output intent&lt;/dt>
&lt;dd>The rendering intent for output/export. Rendering intent can only be selected when using LittleCMS2 to apply the output color profile (this can be changed in
&lt;a href="https://ansel.photos/en/doc/preferences-settings/processing/" title="" rel="dofollow" >preferences &amp;gt; processing&lt;/a>). If Ansel&amp;rsquo;s internal rendering routines are used, this option is hidden. For more details see
&lt;a href="https://ansel.photos/en/doc/color-management/rendering-intent/" title="" rel="dofollow" >rendering intent&lt;/a>.&lt;/dd>
&lt;dt>output profile&lt;/dt>
&lt;dd>The profile used to render colors for output/export. The profile data will be embedded into the output file (if supported by the file format) allowing other applications to correctly interpret its colors. As not all applications are aware of color profiles, the general recommendation is to stick to sRGB unless you know what you are doing and have a good reason to do otherwise.&lt;/dd>
&lt;/dl></description></item><item><title>Raw black/white point</title><link>https://ansel.photos/en/doc/views/darkroom/modules/raw-black-white-point/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>a167127b939616b7dfe1a7ee2b0b81e6f456079d76d36ad626bc051bf8d09cc0</guid><description>&lt;p>Define camera-specific black and white points.&lt;/p>
&lt;p>This module is activated automatically for all raw images. Default settings are applied for all supported cameras. Changes to the defaults are not normally required.&lt;/p>
&lt;/section>
&lt;section id="module-controls">
&lt;h2 class="text-left heading">
Module controls
&lt;span class="header-filet">&lt;/span>
&lt;/h2>
&lt;dl>
&lt;dt>black level 0-3&lt;/dt>
&lt;dd>The camera-specific black level of the four pixels in the RGGB Bayer pattern. Pixels with values lower than this level are not considered to contain valid data.&lt;/dd>
&lt;dt>white point&lt;/dt>
&lt;dd>The camera-specific white level. All pixels with values above this are likely to be clipped and will be handled accordingly in the
&lt;a href="https://ansel.photos/en/doc/views/darkroom/modules/highlight-reconstruction/" title="" rel="dofollow" >&lt;em>highlight reconstruction&lt;/em>&lt;/a> module.&lt;/dd>
&lt;dt>flat field correction&lt;/dt>
&lt;dd>Use flat field correction to compensate for lens shading. This field only appears for applicable Raw files and will automatically use any GainMap embedded in the Raw. You can choose to disable this correction if desired.&lt;/dd>
&lt;/dl></description></item><item><title>Raw chromatic aberrations</title><link>https://ansel.photos/en/doc/views/darkroom/modules/raw-chromatic-aberrations/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>2ce8e1e8e961565c7a5792d5fa5e42e7519fcfeb8af425d299a4393aeffead31</guid><description>&lt;p>Correct chromatic aberrations of raw images.&lt;/p>
&lt;p>As this module operates on non-demosaiced raw data, the underlying model assumes an uncropped photographic image as input. It is therefore likely to fail when you zoom in, as it is only able to operate on the visible portion of the image. The module will therefore be bypassed at high zoom levels, and a &amp;ldquo;bypassed&amp;rdquo; message will appear at the top of the module. This limitation only applies to interactive work and not to the final export.&lt;/p></description></item><item><title>Raw denoise</title><link>https://ansel.photos/en/doc/views/darkroom/modules/raw-denoise/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>206451904c69d1ccb5adf213dcc4022fce2f2a069cf40b481f15239535543f34</guid><description>&lt;p>Perform denoising on raw image data before it is
&lt;a href="https://ansel.photos/en/doc/views/darkroom/modules/demosaic/" title="" rel="dofollow" >demosaiced&lt;/a>.&lt;/p>
&lt;p>This module has been ported from &lt;a href="https://www.dechifro.org/dcraw/" title="External link" target="_blank" rel="noopener noreferrer nofollow" >dcraw&amp;thinsp;&lt;sup class="icon">&lt;i class="fa fa-external-link-alt">&lt;/i>&lt;/sup>&lt;/a>.&lt;/p>
&lt;/section>
&lt;section id="module-controls">
&lt;h2 class="text-left heading">
Module controls
&lt;span class="header-filet">&lt;/span>
&lt;/h2>
&lt;dl>
&lt;dt>noise threshold&lt;/dt>
&lt;dd>The threshold for noise detection. Higher values lead to stronger noise removal and greater loss of image detail.&lt;/dd>
&lt;dt>coarse/fine curves&lt;/dt>
&lt;dd>The noise of an image is usually a combination of fine-grained and coarse-grained noise. These curves allow the image to be denoised more or less depending on the coarseness of the visible noise. The left of the curve will act on very coarse grain noise, while the right of the curve will act on very fine grain noise.&lt;/dd>
&lt;dd>
&lt;p>Raising the curve will result in more smoothing, while lowering it will result in less smoothing. As an example, you can preserve very fine-grained noise by pulling down the rightmost point of the curve to the minimum value.&lt;/p></description></item><item><title>Retouch</title><link>https://ansel.photos/en/doc/views/darkroom/modules/retouch/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>553fc808ce2c713194a6153eb844ff50dbe3b82f2d41048adf5b2da9d472e433</guid><description>&lt;p>Remove unwanted elements from your image by cloning, healing, blurring and filling using drawn shapes.&lt;/p>
&lt;p>This module includes a &amp;ldquo;heal&amp;rdquo; tool (based on the heal tool from GIMP), as well as &amp;ldquo;fill&amp;rdquo; and &amp;ldquo;blur&amp;rdquo; modes. It can also take advantage of wavelet decomposition, allowing the image to be separated into layers of varying detail (from coarse to fine) which can be selectively retouched before being recombined to produce the output image.&lt;/p></description></item><item><title>Rgb curve</title><link>https://ansel.photos/en/doc/views/darkroom/modules/rgb-curve/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>0fd8593bdaa721f598309c97f76b34000003f8fd14d8f1ff2fbf8f21c1379bb3</guid><description>&lt;p>A classic digital photography tool to alter an image&amp;rsquo;s tones using curves.&lt;/p>
&lt;p>Activate the color picker on the left to show the picked values in the graph (Ctrl+click or right-click to use the picker in area mode). Numerical (Lab) values of the input and output (see below) at the selected spot or area are shown at the top left of the widget.&lt;/p>
&lt;p>A second color picker to the right can be used to automtaically create new nodes based on the sampled area. Ctrl+click+drag to alter the created nodes to have a positive curve for the selected area; Shift+click+drag to create a negative curve.&lt;/p></description></item><item><title>Rgb levels</title><link>https://ansel.photos/en/doc/views/darkroom/modules/rgb-levels/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>632892d3b60801faf417e2f81fcd28c578321914408ae2646a84d9c767184641</guid><description>&lt;p>Adjust black, white and mid-gray points in RGB color space.&lt;/p>
&lt;p>The rgb levels tool shows a histogram of the image, and displays three bars with handles. Drag the handles to modify the black, middle-gray and white points in lightness (in &amp;ldquo;RGB, linked channels&amp;rdquo; mode) or independently for each of the R, G and B channels (in &amp;ldquo;RGB, independent channels&amp;rdquo; mode).&lt;/p>
&lt;p>Moving the black and white bars to match the left and right borders of the histogram will make the output image span the full available tonal range. This will increase the image&amp;rsquo;s contrast.&lt;/p></description></item><item><title>Rotate and perspective</title><link>https://ansel.photos/en/doc/views/darkroom/modules/rotate-perspective/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>82736a042c81a8d6fc74d0d128a56c1b2e13ea09447749545cad7e26a699ed45</guid><description>&lt;p>Automatically correct for converging lines, a form of perspective distortion. The underlying mechanism is inspired by Markus Hebel&amp;rsquo;s &lt;a href="http://www.shiftn.de/" title="External link" target="_blank" rel="noopener noreferrer nofollow" >&lt;em>ShiftN&lt;/em>&amp;thinsp;&lt;sup class="icon">&lt;i class="fa fa-external-link-alt">&lt;/i>&lt;/sup>&lt;/a> program. This module also allows for the rotation of the image to be adjusted.&lt;/p>
&lt;p>Perspective distortions are a natural effect when projecting a three dimensional scene onto a two dimensional plane and cause objects close to the viewer to appear larger than objects further away. Converging lines are a special case of perspective distortions frequently seen in architectural photographs &amp;ndash; parallel lines, when photographed at an angle, are transformed into converging lines that meet at some vantage point within or outside of the image frame.&lt;/p></description></item><item><title>Rotate pixels</title><link>https://ansel.photos/en/doc/views/darkroom/modules/rotate-pixels/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>a21ca24f7a78c8a5dd09ee04270f7e58c6ac50e00916fe31b1efca49deb4ce58</guid><description>&lt;p>The sensors of some cameras (such as the Fujifilm FinePix S2Pro, F700, and E550) have a diagonally oriented Bayer pattern instead of the usual orthogonal layout.&lt;/p>
&lt;p>Without correction this would lead to a tilted image with black corners. This module applies the required rotation.&lt;/p>
&lt;p>Ansel detects images that need correction using their Exif data and automatically activates this module where required. For other images the module always remains disabled.&lt;/p>
&lt;p>The module has no controls.&lt;/p></description></item><item><title>Scale pixels</title><link>https://ansel.photos/en/doc/views/darkroom/modules/scale-pixels/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>80d2709a9ca13dcac69d0246c31f74ca449555f8c0ef9570608955ff3a2efe1b</guid><description>&lt;p>Some cameras (such as the Nikon D1X) have rectangular instead of the usual square sensor cells. Without correction this would lead to distorted images. This module applies the required scaling.&lt;/p>
&lt;p>Ansel detects images that need correction using their Exif data and automatically activates this module where required. For other images the module always remains disabled.&lt;/p>
&lt;p>The module has no controls.&lt;/p></description></item><item><title>Sharpen</title><link>https://ansel.photos/en/doc/views/darkroom/modules/sharpen/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>59df71a32ec6c2a86c384526c746265ff855f7d9c5ff6144e43f8ba9d1808d3c</guid><description>&lt;p>Sharpen the details in the image using a standard UnSharp Mask (USM).&lt;/p>
&lt;p>This module works by increasing the contrast around edges and thereby enhancing the &lt;em>impression&lt;/em> of sharpness of an image. This module is applied to the L channel in Lab color space.&lt;/p>
&lt;hr />
&lt;p>&lt;em>&lt;strong>Note:&lt;/strong> The USM algorithm used in this module performs blurs in Lab color space, which can produce undesirable effects, and is no longer recommended. Instead use the presets offered by the
&lt;a href="https://ansel.photos/en/doc/views/darkroom/modules/contrast-equalizer/" title="" rel="dofollow" >contrast equalizer&lt;/a> module for deblurring or the
&lt;a href="https://ansel.photos/en/doc/views/darkroom/modules/local-contrast/" title="" rel="dofollow" >local contrast&lt;/a> module for general sharpness.&lt;/em>&lt;/p></description></item><item><title>Surface blur</title><link>https://ansel.photos/en/doc/views/darkroom/modules/surface-blur/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>b0877b773358db259c4a644ed1c817d2d67d179e08c9f452d6cba60d38384c6a</guid><description>&lt;p>Smooth image surfaces while preserving sharp edges using a bilateral filter.&lt;/p>
&lt;p>This module &lt;em>can&lt;/em> be used to denoise images, however you should be aware that bilateral filters are susceptible to overshoots and Ansel offers much better alternatives. For example, the
&lt;a href="https://ansel.photos/en/doc/views/darkroom/modules/astrophoto-denoise/" title="" rel="dofollow" >&lt;em>astrophoto denoise&lt;/em>&lt;/a> module uses a non-local means denoising algorithm, and the
&lt;a href="https://ansel.photos/en/doc/views/darkroom/modules/denoise-profiled/" title="" rel="dofollow" >&lt;em>denoise (profiled)&lt;/em>&lt;/a> module provides a choice between non-local means and wavelet denoising algorithms.&lt;/p>
&lt;p>The &lt;em>surface blur&lt;/em> module blurs noise within the surfaces of an image by averaging pixels with their neighbors, taking into account not only their geometric distance but also their distance on the range scale (i.e. differences in their RGB values). It can be particularly useful if one RGB channel is more noisy/needs more smoothing than the others. In such a case, use the
&lt;a href="https://ansel.photos/en/doc/views/darkroom/modules/color-calibration/" title="" rel="dofollow" >&lt;em>color calibration&lt;/em>&lt;/a> module to examine the channels one by one, in order to set the blur intensities accordingly.&lt;/p></description></item><item><title>Tone equalizer</title><link>https://ansel.photos/en/doc/views/darkroom/modules/tone-equalizer/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>d3d6ba5604ae15152d17bdf5966b01f269b93662e8096a956ce1f141dfb01b64</guid><description>&lt;p>Dodge and burn while preserving local contrast.&lt;/p>
&lt;p>It works in linear RGB space and utilizes a user-defined mask to guide the dodging and burning adjustments, helping to preserve local contrast within the image.&lt;/p>
&lt;p>The following diagram describes how the tone equalizer works:&lt;/p>
&lt;p>
&lt;figure class="img-wrapper " id="tone-equalizer-overviewjpg">
&lt;button class="open-lightbox-button" onclick="lightbox(&amp;#34;tone-equalizer-overviewjpg&amp;#34;)">
&lt;i class="fa fa-expand-alt open-lightbox-icon fa-fw">&lt;/i>
&lt;/button>
&lt;button class="open-link-button" onclick="window.open('https:\/\/ansel.photos\/tone-equalizer-overview.jpg', '_blank');">
&lt;i class="fa fa-external-link-alt open-link-icon fa-fw">&lt;/i>
&lt;/button>
&lt;div class="img-container" onclick="lightbox(&amp;#34;tone-equalizer-overviewjpg&amp;#34;)" style="cursor: pointer;" >
&lt;img src=https://ansel.photos/tone-equalizer-overview.jpg alt="image"
style=" "
decoding="async" loading="lazy"sizes="(max-width: 992px) 100vw, (max-width: 1200px) 66.67vw, 50vw" srcset="https://ansel.photos/tone-equalizer-overview_hu_ab89ab0110bcc971.jpg 140w, https://ansel.photos/tone-equalizer-overview_hu_9cec2f183638bbe1.jpg 264w, https://ansel.photos/tone-equalizer-overview_hu_489df821abe368f4.jpg 331w, https://ansel.photos/tone-equalizer-overview_hu_ac7640396cc352c4.jpg 400w, https://ansel.photos/tone-equalizer-overview_hu_6190711cce08de9f.jpg 496w, https://ansel.photos/tone-equalizer-overview_hu_c4f204dae23e7d6d.jpg 576w, https://ansel.photos/tone-equalizer-overview_hu_d5abe8b5ca281d9b.jpg 600w, https://ansel.photos/tone-equalizer-overview_hu_c4117d387460ee57.jpg 720w, https://ansel.photos/tone-equalizer-overview_hu_d6c4b03b9a9f602f.jpg 800w, https://ansel.photos/tone-equalizer-overview_hu_146300af55b92cf9.jpg 992w, https://ansel.photos/tone-equalizer-overview_hu_4f9577ec98025fa9.jpg 1200w, https://ansel.photos/tone-equalizer-overview_hu_188cc4dda674e670.jpg 1320w"width="1423" height="645"/>
&lt;/div>
&lt;/figure>
&lt;/p></description></item><item><title>Unbreak input profile</title><link>https://ansel.photos/en/doc/views/darkroom/modules/unbreak-input-profile/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>6a0a602ccffdbfc0e53390ce6f2e75f43cde8922ad89cf376c5c670d2e1ef19c</guid><description>&lt;p>Add a correction curve to image data. This is required if you have selected certain input profiles in the
&lt;a href="https://ansel.photos/en/doc/views/darkroom/modules/input-color-profile/" title="" rel="dofollow" >&lt;em>input color profile&lt;/em>&lt;/a> module.&lt;/p>
&lt;p>If you decide to use an ICC profile from the camera manufacturer in the
&lt;a href="https://ansel.photos/en/doc/views/darkroom/modules/input-color-profile/" title="" rel="dofollow" >&lt;em>input color profile&lt;/em>&lt;/a> module, a correction curve frequently needs to be pre-applied to image data to prevent the final output from looking too dark. This extra processing is not required if you use Ansel&amp;rsquo;s standard or enhanced color matrices.&lt;/p></description></item><item><title>Vignetting</title><link>https://ansel.photos/en/doc/views/darkroom/modules/vignetting/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>e9a0284c8f85be09041c0656b34ca52893e7c8ead3f1f7bbc98608a90fcf09fe</guid><description>&lt;p>Apply a vignetting effect to the image.&lt;/p>
&lt;p>Vignetting is a modification of the brightness and saturation at the borders of the image in a specified shape. Many of the parameters listed below can also be modified with a graphical control that overlays the image when the module has focus, showing the shape and extent of the effect.&lt;/p>
&lt;hr />
&lt;p>&lt;strong>Note:&lt;/strong> This module is known to provoke banding artifacts under certain conditions. You should consider activating the
&lt;a href="https://ansel.photos/en/doc/views/darkroom/modules/dithering/" title="" rel="dofollow" >&lt;em>dithering&lt;/em>&lt;/a> module to alleviate this.&lt;/p></description></item><item><title>Watermark</title><link>https://ansel.photos/en/doc/views/darkroom/modules/watermark/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>1d0deedf74a8ee16fd763ee65d267f252b836b68aece69151adc850588b4d84c</guid><description>&lt;p>Render a vector-based overlay onto your image. Watermarks are standard SVG documents and can be designed using &lt;a href="http://www.inkscape.org/" title="External link" target="_blank" rel="noopener noreferrer nofollow" >Inkscape&amp;thinsp;&lt;sup class="icon">&lt;i class="fa fa-external-link-alt">&lt;/i>&lt;/sup>&lt;/a>.&lt;/p>
&lt;p>You can also use bitmap (PNG) images.&lt;/p>
&lt;p>The SVG processor in Ansel can also substitute strings within an SVG document, allowing image-dependent information to be included in the watermark.&lt;/p>
&lt;p>User-designed watermarks should be placed into the directory &lt;code>$HOME/.config/Ansel/watermarks&lt;/code>. Once in place, use the reload button update the list of available watermarks.&lt;/p></description></item><item><title>White balance</title><link>https://ansel.photos/en/doc/views/darkroom/modules/white-balance/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>f399a06aece244ad993a79dfa3c65be576bb27bd66cfa3bf426e7f9a6531d7a0</guid><description>&lt;p>Adjust the white balance of the image by altering the temperature and tint, defining a coefficient for each RGB channel, or choosing from list of predefined white balance settings.&lt;/p>
&lt;p>The default settings for this module are derived from the camera white balance stored in the image&amp;rsquo;s Exif data.&lt;/p>
&lt;p>White balance is not intended as a &amp;ldquo;creative&amp;rdquo; module &amp;ndash; its primary goal is to technically correct the white balance of the image ensuring that neutral colored objects in the scene are rendered with neutral colors in the image. For creative color operations, it is usually better to use other modules such as
&lt;a href="https://ansel.photos/en/doc/views/darkroom/modules/color-calibration/" title="" rel="dofollow" >&lt;em>color calibration&lt;/em>&lt;/a> or
&lt;a href="https://ansel.photos/en/doc/views/darkroom/modules/color-balance-rgb/" title="" rel="dofollow" >&lt;em>color balance rgb&lt;/em>&lt;/a>.&lt;/p></description></item><item><title>Map</title><link>https://ansel.photos/en/doc/views/map/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Wed, 11 Oct 2023 00:00:00 +0000</updated><guid>a23211e04d5b59d49302fec030a50c7356effecc3afadabfdb8515eb4fdaf939</guid><description>&lt;p>The Map view is optional and needs to be activated in
&lt;a href="https://ansel.photos/en/doc/preferences-settings/other-views/" title="" rel="dofollow" >Preferences &amp;gt; Other views&lt;/a>. It allows you to see where your geo-tagged images were taken, and to add location information to non-geo-tagged images.&lt;/p>
&lt;p>The Map view shows a world map with the images in the current
&lt;a href="https://ansel.photos/en/doc/getting-started/library/" title="" rel="dofollow" >collection&lt;/a> pinned to their geo-tagged location (if available). This requires that images are tagged with location information. Some newer cameras, including smartphones, are already equipped with GPS receivers. Other cameras may need additional GPS hardware to do this.&lt;/p></description></item><item><title>Slideshow</title><link>https://ansel.photos/en/doc/views/slideshow/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Wed, 11 Oct 2023 00:00:00 +0000</updated><guid>22097c20e00d32d175daecda00d97be0f049ee1952256f0f9083a984a25d2cb0</guid><description>&lt;p>The Slideshow view is optional and needs to be activated in
&lt;a href="https://ansel.photos/en/doc/preferences-settings/other-views/" title="" rel="dofollow" >Preferences &amp;gt; Other views&lt;/a>. It allows you to watch a slideshow of your current collection with the associated filtering rules and sort order applied.&lt;/p>
&lt;p>To learn more about how to define the collection and filtering rules, see the section on
&lt;a href="https://ansel.photos/en/doc/getting-started/library/" title="" rel="dofollow" >collections&lt;/a>.&lt;/p>
&lt;p>The next section provides more details on the
&lt;a href="https://ansel.photos/en/doc/views/slideshow/usage/" title="" rel="dofollow" >usage&lt;/a> of the Slideshow view.&lt;/p></description></item><item><title>Usage</title><link>https://ansel.photos/en/doc/views/slideshow/usage/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Thu, 12 Oct 2023 00:00:00 +0000</updated><guid>1770a6012f6db62827de51cd6545150d12c95d46b1f4d05e4b7a9e9fbcb31f5a</guid><description>&lt;p>The slideshow view is still in an early stage of development with only a basic set of features.&lt;/p>
&lt;figure class="full-width border-0 p-0 mt-2 mb-3">
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-1">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-1"> 1&lt;/a>&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-2">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-2"> 2&lt;/a>&lt;/span>&lt;span>spacebar start and stop auto-advance mode which automatically switches
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-3">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-3"> 3&lt;/a>&lt;/span>&lt;span> to the next images every five seconds by default.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-4">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-4"> 4&lt;/a>&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-5">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-5"> 5&lt;/a>&lt;/span>&lt;span>ESC leave slideshow mode and return to lighttable view.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-6">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-6"> 6&lt;/a>&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-7">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-7"> 7&lt;/a>&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-8">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-8"> 8&lt;/a>&lt;/span>&lt;span>+ or increase delay between each image.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-9">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-9"> 9&lt;/a>&lt;/span>&lt;span>up arrow
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-10">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-10">10&lt;/a>&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-11">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-11">11&lt;/a>&lt;/span>&lt;span>- Or decrease delay between each image.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-12">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-12">12&lt;/a>&lt;/span>&lt;span>down arrow
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-13">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-13">13&lt;/a>&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-14">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-14">14&lt;/a>&lt;/span>&lt;span>left-click or
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-15">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-15">15&lt;/a>&lt;/span>&lt;span>right arrow or switch to the next image of the collection.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-16">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-16">16&lt;/a>&lt;/span>&lt;span>right shift-key
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-17">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-17">17&lt;/a>&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-18">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-18">18&lt;/a>&lt;/span>&lt;span>right-click or
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-19">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-19">19&lt;/a>&lt;/span>&lt;span>left arrow or switch to the previous image of the collection.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-20">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-20">20&lt;/a>&lt;/span>&lt;span>left shift-key&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/figure>
&lt;hr />
&lt;p>&lt;strong>Hint:&lt;/strong> To take full advantage of your screen size, put Ansel into fullscreen mode by pressing F11 and hide the border-controls by pressing the B key.&lt;/p></description></item><item><title>Print</title><link>https://ansel.photos/en/doc/views/print/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Wed, 11 Oct 2023 00:00:00 +0000</updated><guid>bfda48792054fd1466e95c5ebe70be867e77497b8c263985fc49401973e8dca5</guid><description>&lt;p>The Print view is optional and needs to be activated in
&lt;a href="https://ansel.photos/en/doc/preferences-settings/other-views/" title="" rel="dofollow" >Preferences &amp;gt; Other views&lt;/a>. This view allows you to print your images. Because printing is not easy, there are many technical aspects to be taken into account.&lt;/p>
&lt;p>After selecting an image in the
&lt;a href="https://ansel.photos/en/doc/views/lighttable/" title="" rel="dofollow" >Lighttable view&lt;/a> you can enter the
&lt;a href="https://ansel.photos/en/doc/views/toolboxes/print-settings/" title="" rel="dofollow" >Print settings&lt;/a> module to adjust printer settings and initiate printing.&lt;/p>
&lt;p>This module supports the printer&amp;rsquo;s ICC profile, which is somewhat mandatory if you want to obtain a high quality print close to the image displayed on the screen.&lt;/p></description></item><item><title>Print view layout</title><link>https://ansel.photos/en/doc/views/print/print-view-layout/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>6229ee264770f34620afea614c12a4442d0622bd2150047c68deedafaecf0143</guid><description>&lt;p>The central area displays the image layout on the paper (the white area). Some gray borders may be displayed around the image to represent the printable area (the page minus the borders) not filled by the image.&lt;/p>
&lt;p>The
&lt;a href="https://ansel.photos/en/doc/views/toolboxes/filmstrip/" title="" rel="dofollow" >filmstrip&lt;/a> below the image allows you to select more images.&lt;/p>
&lt;/section>
&lt;section id="overlays">
&lt;h3 class="text-left heading">
Overlays
&lt;/h3>
&lt;p>When the mouse is over the bounding box of an image, its width and height are shown along its top and left, respectively. Margins between the bounding box and the page edge are notated next to the dotted lines extending out from each side of the bounding box. All measurements are shown in the units as chosen in the print settings module.&lt;/p></description></item><item><title>GUI toolboxes</title><link>https://ansel.photos/en/doc/views/toolboxes/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>d37acb721803712e0d59b4f4aeca72cb665cb1d01246deccf8da3c523ff6a508</guid><description/></item><item><title>Notes</title><link>https://ansel.photos/en/doc/views/toolboxes/notes/</link><pubDate>Mon, 16 Feb 2026 00:00:00 +0000</pubDate><updated>Mon, 16 Feb 2026 00:00:00 +0000</updated><guid>d67fe2ba19f341eaede0f577977e237604f789f7e8ad8e41c9e378ce5dd31d1b</guid><description>&lt;p>Write per-image notes that live next to your files and render as Markdown. Such notes can be to-do lists, memos, contacts of the persons in the image, tips or instructions for collaborators, etc.&lt;/p>
&lt;p>The module opens in &lt;strong>preview&lt;/strong> by default; switch to &lt;strong>edit&lt;/strong> to change the source text. The Markdown parsing needs Ansel to be build with &lt;a href="https://github.com/commonmark/cmark" title="External link" target="_blank" rel="noopener noreferrer nofollow" >CMark&amp;thinsp;&lt;sup class="icon">&lt;i class="fa fa-external-link-alt">&lt;/i>&lt;/sup>&lt;/a>, which is optional. If Ansel was not built with this library, it will be rendered as plain text.&lt;/p></description></item><item><title>Clipping warning</title><link>https://ansel.photos/en/doc/views/toolboxes/clipping/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>a85923c2de836cde0c3b7451abd7a360d37710114c39a344b26f8f9394a45912</guid><description>&lt;p>Highlight areas of the image that may exhibit luminance or gamut clipping.&lt;/p>
&lt;p>When an image is sent to a display device, each pixel is normally represented as a set of 3 numbers, representing the intensity of the red, green and blue primary colors in the output color space. Because the output color space is usually closely related to hardware with physical limations, there is a maximum permitted value for the [R,G,B] channels, representing the maximum available intensity for that color space. Similarly, there is also a minimum value below which pixel values will be mapped to zero. When we try to convert from a larger color space to the final output color space, any values exceeding this maximum will be clamped to the maximum value, and any values below the minimum will be clamped to zero. This process is called &amp;ldquo;clipping&amp;rdquo; and it will lead to lost detail, or &amp;ldquo;incorrect&amp;rdquo; colors for any pixels with clipped channels.&lt;/p></description></item><item><title>Color assessment</title><link>https://ansel.photos/en/doc/views/toolboxes/color-assessment/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>cdd69e724ab2fa0c7e97817db53050a5e0cf3f24d2a65ab1db7619913b077efc</guid><description>&lt;p>Assess colors and brightness in your image using ISO 12646:2008 recommended viewing conditions.&lt;/p>
&lt;p>When developing an image, the way we perceive brightness, contrast and saturation is influenced by the surrounding ambient conditions. If an image is displayed against a dark background, this can have a number of adverse effects on our perception of that image:&lt;/p>
&lt;ul>
&lt;li>Exaggeration of the perceived exposure makes the image seems brighter than it really is. This is nicely illustrated by the &lt;a href="https://en.wikipedia.org/wiki/Checker_shadow_illusion" title="Wikipedia link" target="_blank" rel="noopener noreferrer nofollow" >Adelson checkerboard shadow effect&amp;thinsp;&lt;sup class="icon">&lt;i class="fab fa-wikipedia-w">&lt;/i>&lt;/sup>&lt;/a>.&lt;/li>
&lt;li>A decrease in the perceived saturation in the image makes the colors seem less rich than they really are (the Hunt effect).&lt;/li>
&lt;li>A decrease in the perceived contrast in the image makes the tones seem flatter than they really are (Bartleson-Breneman effect 3)&lt;/li>
&lt;/ul>
&lt;p>The end result is that the final image can end up being too dark and overly-processed in terms of contrast and color saturation. To avoid this, the &amp;ldquo;ISO 12646:2008&amp;rdquo; standard makes some recommendations about the conditions under which the colors of an image should be assessed. The &lt;em>color assessment&lt;/em> module in the darkroom places a frame around the image to help the user better assess the colors in the image, along the lines of those recommendations.&lt;/p></description></item><item><title>Display metadata</title><link>https://ansel.photos/en/doc/views/toolboxes/image-information/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>4bca141a58ceb8bf9f90b13865b6f0861eea228eceaf4fe77dc2fd4280457d81</guid><description>&lt;p>Display information embedded within an image&amp;rsquo;s Exif data as well as a number of additional data fields defined by Ansel.&lt;/p>
&lt;p>When hovering with the mouse over image thumbnails, the displayed data is automatically updated to show information about the image currently under the mouse cursor.&lt;/p>
&lt;p>When several images are selected and the focus is not on a single image, the module only displays information that is the same for all images. If any fields differ between the images, the text &amp;ldquo;&lt;em>&amp;lt;various values&amp;gt;&lt;/em>&amp;rdquo; is displayed instead.&lt;/p></description></item><item><title>Duplicate manager</title><link>https://ansel.photos/en/doc/views/toolboxes/duplicate-manager/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>68b65b108fbefff012e6af3e41886dd4ba4d922da01a70e853a3bfb61039a8a4</guid><description>&lt;p>View and create multiple versions of the current image. Each version can be edited independently without affecting other versions &amp;ndash; all versions use the same underlying image file, but the editing history of each version is stored in its own independent XMP sidecar file.&lt;/p>
&lt;p>The duplicate manager lists each version of the current darkroom image along with its preview thumbnail. Hold down the left mouse button on a thumbnail to temporarily show that version in the center view. Double-click to switch to that version and edit it.&lt;/p></description></item><item><title>Export</title><link>https://ansel.photos/en/doc/views/toolboxes/export/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Thu, 12 Oct 2023 00:00:00 +0000</updated><guid>69f2002fa3bd2b9adf9e735c17c274eecae9d9acb55b53a6af5a01072603d4a9</guid><description>&lt;p>Export selected images.&lt;/p>
&lt;p>Files can be exported to a file on disk, email, various online storage locations, a web album, or a book template.&lt;/p>
&lt;/section>
&lt;section id="module-controls">
&lt;h2 class="text-left heading">
Module controls
&lt;span class="header-filet">&lt;/span>
&lt;/h2>
&lt;/section>
&lt;section id="storage-options">
&lt;h3 class="text-left heading">
Storage options
&lt;/h3>
&lt;dl>
&lt;dt>target storage&lt;/dt>
&lt;dd>The type of location to store your selected images. A number of different back-ends are implemented, including file on disk, LaTeX book template and various web albums. Depending on the selected target, you will be asked to provide additional information, such as filenames or account name and password.&lt;/dd>
&lt;dt>filename template&lt;/dt>
&lt;dd>Define the folder and file to which the image will be exported. This can be automatically generated using several pre-defined variables. See the
&lt;a href="https://ansel.photos/en/doc/variables/" title="" rel="dofollow" >variables&lt;/a> section for details.&lt;/dd>
&lt;dt>output directory selector&lt;/dt>
&lt;dd>The button beside the filename template entry opens a dialog to select the parent directory for export.&lt;/dd>
&lt;dt>on conflict&lt;/dt>
&lt;dd>Choose what to do if the generated filename conflicts with an existing file on export:&lt;/dd>
&lt;dd>
&lt;ul>
&lt;li>&lt;em>create unique filename&lt;/em>: Automatically choose a unique new file name by appending an integer to name of the conflicting file.&lt;/li>
&lt;/ul>
&lt;/dd>
&lt;dd>
&lt;ul>
&lt;li>&lt;em>overwrite&lt;/em>: Automatically overwrite existing files. This option will present you with a confirmation dialog in order to protect you from accidental data loss &amp;ndash; you can disable this in
&lt;a href="https://ansel.photos/en/doc/preferences-settings/security/" title="" rel="dofollow" >preferences &amp;gt; security &amp;gt; ask before exporting in overwrite mode&lt;/a>. &lt;em>&lt;strong>Note:&lt;/strong> This dialog is not presented per-file but as a one-off confirmation before the export job starts.&lt;/em>&lt;/li>
&lt;/ul>
&lt;/dd>
&lt;dd>
&lt;ul>
&lt;li>&lt;em>skip&lt;/em>: Do not export images where the destination filename already exists.&lt;/li>
&lt;/ul>
&lt;/dd>
&lt;/dl>
&lt;/section>
&lt;section id="format-options">
&lt;h3 class="text-left heading">
Format options
&lt;/h3>
&lt;dl>
&lt;dt>file format&lt;/dt>
&lt;dd>Choose the file format for the exported image. Additional options will appear (below) depending on the selected format.&lt;/dd>
&lt;dt>quality&lt;/dt>
&lt;dd>The quality of the exported file. Higher values lead to larger file sizes. The default quality (95) is a good setting for very high quality exports (e.g. for archiving or printing purposes). If you need a good compromise between size and quality (e.g. for online image display or uploads) you should consider a value of “90” instead.&lt;/dd>
&lt;dt>bit depth&lt;/dt>
&lt;dd>The number of bits used for each color channel. More bits means less posterization/color banding.&lt;/dd>
&lt;dt>compression&lt;/dt>
&lt;dd>The type of compression to use.&lt;/dd>
&lt;dt>compression level&lt;/dt>
&lt;dd>For export formats where &lt;em>compression&lt;/em> can be specified, the &lt;em>compression level&lt;/em> specifies how much compression to apply. The higher the level, the more the data will be compressed, at the cost of more CPU cycles.&lt;/dd>
&lt;dt>b&amp;amp;w image&lt;/dt>
&lt;dd>For TIFF export format, it is possible to save a monochrome image. This setting controls whether the resulting file encodes the shades of gray as separate RGB channels, or as a single grayscale channel. The latter option will result in smaller files.&lt;/dd>
&lt;/dl>
&lt;/section>
&lt;section id="global-options">
&lt;h3 class="text-left heading">
Global options
&lt;/h3>
&lt;dl>
&lt;dt>set size&lt;/dt>
&lt;dd>Choose how to measure the maximum size of your exported image&lt;/dd>
&lt;dd>
&lt;ul>
&lt;li>&lt;em>in pixels (for file)&lt;/em>: Enter the maximum width and height in pixels.&lt;/li>
&lt;/ul>
&lt;/dd>
&lt;dd>
&lt;ul>
&lt;li>&lt;em>in cm (for print)&lt;/em>: Enter the maximum width and height in cm and define the image&amp;rsquo;s dpi. The equivalent size in pixels will be automatically calculated.&lt;/li>
&lt;/ul>
&lt;/dd>
&lt;dd>
&lt;ul>
&lt;li>&lt;em>in inch (for print)&lt;/em>: Enter the maximum width and height in inches and define the image&amp;rsquo;s dpi. The equivalent size in pixels will be automatically calculated.&lt;/li>
&lt;/ul>
&lt;/dd>
&lt;dd>
&lt;ul>
&lt;li>&lt;em>by scale (for file)&lt;/em>: Enter a multiplier to specify by how much the exported image should be scaled compared to the input image. For example, entering a value of 0.5 will result in an output image with half the width and height (in pixels) of the original image.&lt;/li>
&lt;/ul>
&lt;/dd>
&lt;dt>dpi&lt;/dt>
&lt;dd>If units of cm or inches are chosen, set the dpi of the output image. The dpi will also be stored in the Exif data of the exported image. It will be automatically set to 300 if &amp;ldquo;in pixels&amp;rdquo; or &amp;ldquo;by scale&amp;rdquo; is chosen.&lt;/dd>
&lt;dt>max size&lt;/dt>
&lt;dd>Set the maximum width and height of the exported image(s) in pixels, cm or inches (depending on the selected unit) &amp;ndash; zero means that no constraint will be set on that dimension. Exported images will be constrained so as not to exceed either of these values, while retaining the correct aspect ratio. Set both to zero to export with the original dimensions (after cropping). If the entered values exceed the original dimensions Ansel will either export with the original dimensions or upscale the image, depending on the &amp;ldquo;allow upscaling&amp;rdquo; parameter.&lt;/dd>
&lt;dt>allow upscaling&lt;/dt>
&lt;dd>Set to “yes” to perform an upscaling step if the user-defined maximum width and height exceed the original dimensions of the image. If set to “no” the exported image&amp;rsquo;s dimensions will not exceed the dimensions of the original image (after cropping).&lt;/dd>
&lt;dt>high quality resampling&lt;/dt>
&lt;dd>Set this to &amp;lsquo;yes&amp;rsquo; to perform high quality resampling on the image. The image will be processed in full resolution and only downscaled at the very end. This can sometimes result in better quality, but will always be slower.&lt;/dd>
&lt;dt>store masks&lt;/dt>
&lt;dd>Store masks as layers in exported image. Only works for some image formats (currently TIFF and XCF).&lt;/dd>
&lt;dt>profile&lt;/dt>
&lt;dd>The output color profile. Select “image settings” if you want the settings in the
&lt;a href="https://ansel.photos/en/doc/views/darkroom/modules/output-color-profile/" title="" rel="dofollow" >&lt;em>output color profile&lt;/em>&lt;/a> module of the individual images to be respected.&lt;/dd>
&lt;dt>intent&lt;/dt>
&lt;dd>This option lets you define the intent &amp;ndash; the way in which Ansel will handle out-of-gamut colors. See
&lt;a href="https://ansel.photos/en/doc/color-management/rendering-intent/" title="" rel="dofollow" >rendering intent&lt;/a> for a more detailed description of the available options.&lt;/dd>
&lt;dt>style&lt;/dt>
&lt;dd>Choose a
&lt;a href="https://ansel.photos/en/doc/views/toolboxes/styles/" title="" rel="dofollow" >style&lt;/a> which Ansel will combine with the existing history stack to generate the output image. These history items are only added temporarily &amp;ndash; the original history stack is not overwritten. You can use this feature to add processing steps and parameters that you want to be applied specifically to images before export. For example you may define a style that adds a stronger level of sharpening when you produce scaled-down JPEG files for the internet or add a certain level of exposure compensation to all of your output images.&lt;/dd>
&lt;dt>mode&lt;/dt>
&lt;dd>When applying a style during export this option defines whether the history stack items of that style replace the original history stack of the image or are appended to it. Technically speaking, in append mode history stack items of the style will constitute separate instances of the respective modules on top of any existing ones. As a consequence the original history stack will remain in effect with the new items being applied in addition. This way you can apply an overall adjustment (e.g. exposure) to a number of exported images while respecting the settings of each individual image.&lt;/dd>
&lt;dt>export&lt;/dt>
&lt;dd>Press this button to start a background job to export all selected images. A bar at the bottom of the left hand panel displays the progress of the export job. Furthermore a notification message pops up reporting the completion of each individual export. You may click on the pop-up to make it disappear. You may abort the export job by clicking on the &amp;ldquo;x&amp;rdquo; icon located close to the progress bar.&lt;/dd>
&lt;/dl>
&lt;hr />
&lt;p>&lt;strong>Note:&lt;/strong> Images that are selected but currently hidden (because they are members of a collapsed group) will not be exported.&lt;/p></description></item><item><title>Filmstrip</title><link>https://ansel.photos/en/doc/views/toolboxes/filmstrip/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>553187adaaf8561fbf9e0b842d620c55ddc4454c3ff7cc2276a69084565099df</guid><description>&lt;p>The filmstrip can be used to quickly switch between images. The images shown are the same as those displayed in the lighttable view and are defined by the currently-selected collection.&lt;/p>
&lt;p>
&lt;figure class="img-wrapper " id="filmstripjpg">
&lt;button class="open-lightbox-button" onclick="lightbox(&amp;#34;filmstripjpg&amp;#34;)">
&lt;i class="fa fa-expand-alt open-lightbox-icon fa-fw">&lt;/i>
&lt;/button>
&lt;button class="open-link-button" onclick="window.open('https:\/\/ansel.photos\/filmstrip.jpg', '_blank');">
&lt;i class="fa fa-external-link-alt open-link-icon fa-fw">&lt;/i>
&lt;/button>
&lt;div class="img-container" onclick="lightbox(&amp;#34;filmstripjpg&amp;#34;)" style="cursor: pointer;" >
&lt;img src=https://ansel.photos/filmstrip.jpg alt="image"
style=" "
decoding="async" loading="lazy"sizes="(max-width: 992px) 100vw, (max-width: 1200px) 66.67vw, 50vw" srcset="https://ansel.photos/filmstrip_hu_81dc5f36b818fe14.jpg 140w, https://ansel.photos/filmstrip_hu_d08d46fdb82e23c.jpg 264w, https://ansel.photos/filmstrip_hu_8b85a6bea4d76301.jpg 331w, https://ansel.photos/filmstrip_hu_8cdfce18ca4f498f.jpg 400w, https://ansel.photos/filmstrip_hu_f04a87da522ff0cd.jpg 496w, https://ansel.photos/filmstrip_hu_af04695c6ad5b038.jpg 576w, https://ansel.photos/filmstrip_hu_7f3835eb4b9e9b1f.jpg 600w, https://ansel.photos/filmstrip_hu_d30da616426d93b.jpg 720w, https://ansel.photos/filmstrip_hu_19ed2c142a970f94.jpg 800w, https://ansel.photos/filmstrip_hu_befd11fd7e6f0cc3.jpg 992w, https://ansel.photos/filmstrip_hu_b1dc15fa639539dd.jpg 1200w, https://ansel.photos/filmstrip_hu_6cdb25051f35d56c.jpg 1320w, https://ansel.photos/filmstrip_hu_2fd350e40f17c743.jpg 1440w, https://ansel.photos/filmstrip_hu_6d6539591f82361c.jpg 1600w"width="1894" height="242"/>
&lt;/div>
&lt;/figure>
&lt;/p></description></item><item><title>Find location</title><link>https://ansel.photos/en/doc/views/toolboxes/find-location/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>6e414caabf276876020910a21d957aab81696afeaef23071680f29ea51287461</guid><description>&lt;p>Search for a location on the map. You must be connected to the internet to use this feature.&lt;/p>
&lt;p>To use this module, type in a place name or address, press Enter and a list of results will be shown. Click on an item in the list and the map will zoom to that location. An outline covering that location or a pin pointing at the location will be displayed.&lt;/p>
&lt;p>An outline (polygon) can be used to create a user location. Check the &lt;em>max polygon points&lt;/em> parameter in the
&lt;a href="https://ansel.photos/en/doc/views/toolboxes/map-settings/" title="" rel="dofollow" >map settings&lt;/a> module to ensure that sufficient points are available for a polygon to be displayed.&lt;/p></description></item><item><title>Focus peaking</title><link>https://ansel.photos/en/doc/views/toolboxes/focus-peaking/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>29c6ca9fd92b2542c64d4414525d8c2d2dde2d301c1c9b3647640eec7d285102</guid><description>&lt;p>Identify which parts of the image contain high-contrast details, like edges and textures, which usually indicates that those areas are in focus.&lt;/p>
&lt;p>Activate the module by clicking on the
&lt;figure class="img-wrapper " id="focus-peaking-iconjpg">
&lt;button class="open-lightbox-button" onclick="lightbox(&amp;#34;focus-peaking-iconjpg&amp;#34;)">
&lt;i class="fa fa-expand-alt open-lightbox-icon fa-fw">&lt;/i>
&lt;/button>
&lt;button class="open-link-button" onclick="window.open('https:\/\/ansel.photos\/focus-peaking-icon.jpg', '_blank');">
&lt;i class="fa fa-external-link-alt open-link-icon fa-fw">&lt;/i>
&lt;/button>
&lt;div class="img-container" onclick="lightbox(&amp;#34;focus-peaking-iconjpg&amp;#34;)" style="cursor: pointer;" >
&lt;img src=https://ansel.photos/focus-peaking-icon.jpg alt="image"
style=" "
decoding="async" loading="lazy"width="70" height="62"/>
&lt;/div>
&lt;/figure>
icon. The sharp parts of the image will be highlighted with a yellow, green and blue overlay:&lt;/p>
&lt;p>Focus peaking works by filtering out most of the image noise, measuring the intensity gradients in the image and calculating average and standard deviation statistics. When the gradient of an edge differs significantly from the mean, the associated pixels are marked with a &amp;ldquo;heat map&amp;rdquo; indicating how sharp the edge is.&lt;/p></description></item><item><title>Gamut check</title><link>https://ansel.photos/en/doc/views/toolboxes/gamut/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>731fef80251c4705a6fe9caba323a6a3c8a98ddc61fff2e8e35dcfe4e4bd4729</guid><description>&lt;p>Highlight areas of the image that may exhibit gamut clipping.&lt;/p>
&lt;p>Click the
&lt;figure class="img-wrapper " id="gamut-iconjpg">
&lt;button class="open-lightbox-button" onclick="lightbox(&amp;#34;gamut-iconjpg&amp;#34;)">
&lt;i class="fa fa-expand-alt open-lightbox-icon fa-fw">&lt;/i>
&lt;/button>
&lt;button class="open-link-button" onclick="window.open('https:\/\/ansel.photos\/gamut-icon.jpg', '_blank');">
&lt;i class="fa fa-external-link-alt open-link-icon fa-fw">&lt;/i>
&lt;/button>
&lt;div class="img-container" onclick="lightbox(&amp;#34;gamut-iconjpg&amp;#34;)" style="cursor: pointer;" >
&lt;img src=https://ansel.photos/gamut-icon.jpg alt="image"
style=" "
decoding="async" loading="lazy"width="60" height="53"/>
&lt;/div>
&lt;/figure>
are mutually exclusive modes.&lt;/p>
&lt;p>Right-click on the icon to open a dialog with configuration parameters &amp;ndash; these are the same as for the
&lt;a href="https://ansel.photos/en/doc/views/toolboxes/soft-proof/" title="" rel="dofollow" >soft proof&lt;/a> option.&lt;/p>
&lt;p>You might also like to consider using the
&lt;a href="https://ansel.photos/en/doc/views/toolboxes/clipping/" title="" rel="dofollow" >clipping warning&lt;/a>, which also provides under- and over-exposure warnings as well as a gamut check similar to that offered by this module.&lt;/p></description></item><item><title>Geotagging</title><link>https://ansel.photos/en/doc/views/toolboxes/geotagging/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>2b50083ba81749c1cecc67dd893ae26709808f5183983614e9f49b40dc62e121</guid><description>&lt;p>Import and apply GPX track data to a selection of images.&lt;/p>
&lt;p>This module is common to the
&lt;a href="https://ansel.photos/en/doc/views/lighttable/" title="" rel="dofollow" >lighttable&lt;/a> and
&lt;a href="https://ansel.photos/en/doc/views/map/" title="" rel="dofollow" >map&lt;/a> views. The map view provides an enhanced mode that allows you to preview the position of the images along the GPS tracks while adjusting the images&amp;rsquo; date/time offset and time zone.&lt;/p>
&lt;/section>
&lt;section id="workflow-overview">
&lt;h2 class="text-left heading">
Workflow overview
&lt;span class="header-filet">&lt;/span>
&lt;/h2>
&lt;p>A GPS receiver calculates its current position based on information it receives from satellites, and records it in a GPX file together with the current date and time. The Exif data of the images also contains a time stamp defined by the camera settings. The &lt;em>geotagging&lt;/em> module takes the time stamp of the image, looks up the position in the GPX file at that time, and stores the appropriate coordinates (latitude/longitude/elevation) in its database and the image&amp;rsquo;s XMP sidecar file.&lt;/p></description></item><item><title>Global color picker</title><link>https://ansel.photos/en/doc/views/toolboxes/global-color-picker/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>25ff767277e35b68d81057f9c6d5e15256bd4e0ef5e866bbd441d41cd887c6cd</guid><description>&lt;p>Take color samples from the current darkroom image, display their values in multiple ways and compare colors from different locations.&lt;/p>
&lt;p>The color picker is activated by pressing the color picker icon. The module&amp;rsquo;s parameters will remain in effect until you leave the darkroom mode.&lt;/p>
&lt;p>Besides the global color picker described here, many Ansel modules (e.g.
&lt;a href="https://ansel.photos/en/doc/views/darkroom/modules/rgb-curve/" title="" rel="dofollow" >&lt;em>RGB curve&lt;/em>&lt;/a>) also contain local color pickers which are used to set individual module parameters. You should be aware that these two forms of color picker do not always work in the same color space. The global color picker works in the histogram color space and takes its samples after the complete pixelpipe has been processed. Local color pickers run in the color space of the module in which they are activated and reflect the input or output data of that module within the pixelpipe.&lt;/p></description></item><item><title>Guides &amp; overlays</title><link>https://ansel.photos/en/doc/views/toolboxes/guides-overlays/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>97b306ba82a5ddbc1b9f626e370d11f94bdc0ca72bf72339a8f26077a40e7e86</guid><description>&lt;p>A number of commonly-used compositional guides can be overlaid on your image while you are editing. These can be enabled either globally (all the time) or locally (when certain modules are active).&lt;/p>
&lt;p>Other darkroom functionality also draws colored overlay lines on the image (for example, drawn masks). An option is also provided to change the color of those overlays (see below).&lt;/p>
&lt;/section>
&lt;section id="global-guides">
&lt;h2 class="text-left heading">
Global guides
&lt;span class="header-filet">&lt;/span>
&lt;/h2>
&lt;p>Left-click the
&lt;figure class="img-wrapper " id="guides-overlays-iconjpg">
&lt;button class="open-lightbox-button" onclick="lightbox(&amp;#34;guides-overlays-iconjpg&amp;#34;)">
&lt;i class="fa fa-expand-alt open-lightbox-icon fa-fw">&lt;/i>
&lt;/button>
&lt;button class="open-link-button" onclick="window.open('https:\/\/ansel.photos\/guides-overlays-icon.jpg', '_blank');">
&lt;i class="fa fa-external-link-alt open-link-icon fa-fw">&lt;/i>
&lt;/button>
&lt;div class="img-container" onclick="lightbox(&amp;#34;guides-overlays-iconjpg&amp;#34;)" style="cursor: pointer;" >
&lt;img src=https://ansel.photos/guides-overlays-icon.jpg alt="image"
style=" "
decoding="async" loading="lazy"width="57" height="57"/>
&lt;/div>
&lt;/figure>
icon in the bottom bar to globally display guide overlays. The overlays will remain switched on until you click the button a second time to switch them off.&lt;/p></description></item><item><title>History stack</title><link>https://ansel.photos/en/doc/views/toolboxes/history-stack/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>056f317b68aea6d3c87ae2fdcba909092b2fad2c4fe29b270659a7bb6faf191c</guid><description>&lt;p>View and modify the
&lt;a href="https://ansel.photos/en/doc/views/darkroom/pixelpipe/history-stack/" title="" rel="dofollow" >history stack&lt;/a> of the current darkroom image.&lt;/p>
&lt;p>This module lists every change of state (activate/de-activate/move/change parameters) for all processing modules that have been modified for the current image. Select a point in the stack to return to that point in the development history of the image. Shift+click an item in the history stack to expand that module in the right-hand module panel without changing the current edit.&lt;/p></description></item><item><title>Library</title><link>https://ansel.photos/en/doc/views/toolboxes/collections/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>02716f0c9f69408ac6ec037f83754b015b898e190bfbc607c9327574537515a9</guid><description>&lt;p>Filter the images shown in the lighttable view and filmstrip panel using image attributes. This set of filtered images is known as a &lt;em>collection&lt;/em>.&lt;/p>
&lt;p>Importing images into Ansel stores information about them (filename, path, Exif data, data from XMP sidecar files etc.) in Ansel&amp;rsquo;s library database. A collection may be defined by applying filtering rules to these attributes, thus creating a subset of images to display in the lighttable view and the filmstrip module.&lt;/p></description></item><item><title>Locations</title><link>https://ansel.photos/en/doc/views/toolboxes/locations/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>af7556a1a3dbfa2017506ba393672eb74c20478a15bc57b9a4e9613efaefcef6</guid><description>&lt;p>Create areas or locations and organize them as hierarchical tags.&lt;/p>
&lt;p>A location is shown as a shape on the map when selected. Initially each location is represented as a square or circle and can be changed to a rectangle or ellipse by adjusting the shape&amp;rsquo;s width and/or height.&lt;/p>
&lt;p>A location can also be created from an OpenStreetMap region (city/country) polygon. To achieve this, first make sure the &lt;em>max polygon points&lt;/em> parameter is large enough (some country polygons use more than 150,000 points). Then select the desired location in the
&lt;a href="https://ansel.photos/en/doc/views/toolboxes/find-location/" title="" rel="dofollow" >find location&lt;/a> module. When the corresponding region shape is displayed, a polygon symbol becomes available in the &amp;ldquo;shape&amp;rdquo; control (see below). Select it to create the new location.&lt;/p></description></item><item><title>Lua scripts installer</title><link>https://ansel.photos/en/doc/views/toolboxes/lua-scripts-installer/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>905fdfff7c8b35f9d21adb5dc27a06040b3713d7b1cb8c172fc4d7a4ebde5689</guid><description>&lt;p>This module provides an interface for installing darktable
&lt;a href="https://ansel.photos/en/doc/lua/" title="" rel="dofollow" >lua scripts&lt;/a>. The first time it is run, instructions are displayed in the module.&lt;/p>
&lt;p>It can be disabled with an option in
&lt;a href="https://ansel.photos/en/doc/preferences-settings/lua-options/" title="" rel="dofollow" >preferences &amp;gt; lua options&lt;/a>.&lt;/p></description></item><item><title>Map settings</title><link>https://ansel.photos/en/doc/views/toolboxes/map-settings/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>1d9849dbc55c64f3571f1816383c90db843fed058bd68412363db471d2978da8</guid><description>&lt;p>Select preferred map data from various providers. Some will provide additional layers (satellite view etc.) which you can toggle.&lt;/p>
&lt;/section>
&lt;section id="module-controls">
&lt;h2 class="text-left heading">
Module controls
&lt;span class="header-filet">&lt;/span>
&lt;/h2>
&lt;dl>
&lt;dt>map source&lt;/dt>
&lt;dd>Choose the provider to source map information from.&lt;/dd>
&lt;dt>max polygon points&lt;/dt>
&lt;dd>The
&lt;a href="https://ansel.photos/en/doc/views/toolboxes/find-location/" title="" rel="dofollow" >find location&lt;/a> module doesn&amp;rsquo;t display polygons with more points than this for performance reasons. Usually a country polygon has between 50,000 and 150,000 points.&lt;/dd>
&lt;dt>show OSD&lt;/dt>
&lt;dd>Choose whether to display the OSD controls at the top-left of the center view.&lt;/dd>
&lt;dt>filtered images&lt;/dt>
&lt;dd>Check this box to display only the images from the current collection (those shown in the filmstrip) in the center view. Un-check the box to display all images in the current library, where those images have associated GPS data. You can also toggle this option by pressing Ctrl+S.&lt;/dd>
&lt;dt>max images&lt;/dt>
&lt;dd>The maximum number of thumbnails to display on the map.&lt;/dd>
&lt;dt>group size factor&lt;/dt>
&lt;dd>Increase or decrease the size of area that causes images to be grouped.&lt;/dd>
&lt;dt>min images per group&lt;/dt>
&lt;dd>The minimum number of images that need to be placed in the same position in order to automatically create an image group for them.&lt;/dd>
&lt;dt>thumbnail display&lt;/dt>
&lt;dd>Define what information to show on the map display&lt;/dd>
&lt;dd>&lt;ul>
&lt;li>&lt;em>thumbnails&lt;/em>: Display image thumbnails along with a counter.&lt;/li>
&lt;/ul>
&lt;/dd>
&lt;dd>&lt;ul>
&lt;li>&lt;em>count&lt;/em>: Just display the number of images (to free space on the map). Hover over the number of images to show the corresponding thumbnail(s). A count-only marker behaves the same way as a normal image thumbnail, in terms of color coding, scrolling, drag and drop etc.&lt;/li>
&lt;/ul>
&lt;/dd>
&lt;dd>&lt;ul>
&lt;li>&lt;em>none&lt;/em>: Show nothing.&lt;/li>
&lt;/ul>
&lt;/dd>
&lt;dd>You can also cycle through these options by pressing Shift+S.&lt;/dd>
&lt;/dl></description></item><item><title>Mask manager</title><link>https://ansel.photos/en/doc/views/toolboxes/mask-manager/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>ce29d74f084fded0949d425d6b95cc869fded8f9f6db1480f76eeaf8886653c2</guid><description>&lt;p>Manage all masks and shapes for the current image.&lt;/p>
&lt;p>
&lt;figure class="img-wrapper " id="mask-managerjpg">
&lt;button class="open-lightbox-button" onclick="lightbox(&amp;#34;mask-managerjpg&amp;#34;)">
&lt;i class="fa fa-expand-alt open-lightbox-icon fa-fw">&lt;/i>
&lt;/button>
&lt;button class="open-link-button" onclick="window.open('https:\/\/ansel.photos\/mask-manager.jpg', '_blank');">
&lt;i class="fa fa-external-link-alt open-link-icon fa-fw">&lt;/i>
&lt;/button>
&lt;div class="img-container" onclick="lightbox(&amp;#34;mask-managerjpg&amp;#34;)" style="cursor: pointer;" >
&lt;img src=https://ansel.photos/mask-manager.jpg alt="image"
style=" "
decoding="async" loading="lazy"sizes="(max-width: 992px) 100vw, (max-width: 1200px) 66.67vw, 50vw" srcset="https://ansel.photos/mask-manager_hu_a14892d4970acf97.jpg 84w, https://ansel.photos/mask-manager_hu_2e575583c4c85c70.jpg 159w"width="278" height="462"/>
&lt;/div>
&lt;/figure>
&lt;/p>
&lt;p>This module can be used to create, rename, edit and delete shapes. You can add shapes to and remove shapes from a mask, group shapes together, and combine them using set operators.&lt;/p>
&lt;p>The top line of the mask manager panel contains buttons that can be used to create new shapes. These are the same as in the
&lt;a href="https://ansel.photos/en/doc/views/darkroom/masking-and-blending/masks/drawn/" title="" rel="dofollow" >drawn mask&lt;/a> interface of in processing modules.&lt;/p></description></item><item><title>Metadata editor</title><link>https://ansel.photos/en/doc/views/toolboxes/metadata-editor/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>0c2b77885e5d894b666370cb5523f10e6f3a5830a0e2917f7b7f6371bbee507d</guid><description>&lt;p>Edit the metadata of selected images.&lt;/p>
&lt;p>Metadata is freeformat text (title, description, creator, publisher, rights etc.) that describes your images.&lt;/p>
&lt;p>When several images are selected having different values for a given metadata field, the module displays &lt;em>&lt;leave unchanged>&lt;/em> for that field &amp;ndash; if you choose to apply changes, these fields will not be changed. If you right-click on the field the different values are listed at the end of the contextual menu. Select one of the values in the menu to apply that value to all of the selected images &amp;ndash; the change will be saved once you press the &amp;ldquo;apply&amp;rdquo; button or the Enter/Tab key.&lt;/p></description></item><item><title>Navigation</title><link>https://ansel.photos/en/doc/views/toolboxes/navigation/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>249f8a9ebc547053ff52ef04dc4741adce10c1e59f2be380beb208627a31b191</guid><description>&lt;p>Zoom and pan the current image.&lt;/p>
&lt;p>On the top left hand side of the darkroom, the navigation panel displays a full preview of the current image with a rectangle showing the area that is currently visible in the central panel. Drag the rectangle around to pan the zoomed-in view. The current zoom scale is displayed to the right of the preview image. Click on that figure for a quick access to some common zoom levels.&lt;/p></description></item><item><title>Print settings</title><link>https://ansel.photos/en/doc/views/toolboxes/print-settings/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>0539647d435f61ba38dd11bb3a5e6e49a05ae6631f9cd164deab9acb4df5a03c</guid><description>&lt;p>Manage settings for the
&lt;a href="https://ansel.photos/en/doc/views/print/" title="" rel="dofollow" >print view&lt;/a> and initiate printing.&lt;/p>
&lt;/section>
&lt;section id="module-controls">
&lt;h2 class="text-left heading">
Module controls
&lt;span class="header-filet">&lt;/span>
&lt;/h2>
&lt;/section>
&lt;section id="printer">
&lt;h3 class="text-left heading">
Printer
&lt;/h3>
&lt;dl>
&lt;dt>printer&lt;/dt>
&lt;dd>Select one of the installed printers.&lt;/dd>
&lt;dt>media&lt;/dt>
&lt;dd>The type of media loaded on the printer (Plain Paper, Luster Photo Paper, etc.).&lt;/dd>
&lt;dt>profile&lt;/dt>
&lt;dd>The printer&amp;rsquo;s ICC profile for the loaded paper. This is the profile specific to the printer and paper. This profile is the last color space transformation applied to the picture whose goal is to create a high quality print.&lt;/dd>
&lt;dt>intent&lt;/dt>
&lt;dd>The print rendering intent (“perceptual”, “relative colorimetric”, “saturation” or “absolute colorimetric”). See
&lt;a href="https://ansel.photos/en/doc/color-management/rendering-intent/" title="" rel="dofollow" >rendering intent&lt;/a> for more details.&lt;/dd>
&lt;dt>black point compensation&lt;/dt>
&lt;dd>Whether to adjust the black point of the output profile, which is often lighter than the input profile. This should be “on” when the &lt;em>intent&lt;/em> is set to “relative colorimetric”.&lt;/dd>
&lt;/dl>
&lt;/section>
&lt;section id="page">
&lt;h3 class="text-left heading">
Page
&lt;/h3>
&lt;dl>
&lt;dt>paper size&lt;/dt>
&lt;dd>The size of the paper on which to print.&lt;/dd>
&lt;dt>orientation&lt;/dt>
&lt;dd>Portrait or landscape (note that darktable chooses the best fit by default).&lt;/dd>
&lt;dt>units&lt;/dt>
&lt;dd>The unit to use for setting the margins: “mm”, “cm”, or “inch”.&lt;/dd>
&lt;dt>margins&lt;/dt>
&lt;dd>Set each margin separately, or all together by clicking on the middle “lock” button.&lt;/dd>
&lt;dt>display grid&lt;/dt>
&lt;dd>Select the grid size using the entry field (expressed in the currently selected unit). Tick the option to display the grid on the canvas.&lt;/dd>
&lt;dt>snap to grid&lt;/dt>
&lt;dd>Help setting the image areas by snapping them to the grid for proper alignment.&lt;/dd>
&lt;dt>borderless mode required&lt;/dt>
&lt;dd>Indicates whether the printer borderless mode is to be activated. This item is activated when the user&amp;rsquo;s margins are smaller than the printer hardware margins. Note that it is only an indicator as it does not activate the borderless mode automatically.&lt;/dd>
&lt;/dl>
&lt;/section>
&lt;section id="image-layout">
&lt;h3 class="text-left heading">
Image layout
&lt;/h3>
&lt;dl>
&lt;dt>image width/height&lt;/dt>
&lt;dd>This information field displays the actual image width and height (given with the selected units) on the paper.&lt;/dd>
&lt;dt>scale factor&lt;/dt>
&lt;dd>This information field displays the scaling of the image to fit on the paper. If this value is less than 1 the image is down-scaled, otherwise it is up-scaled. This is an important factor to watch &amp;ndash; a value that is too large (up-scale) may result in a low quality print. The corresponding dpi (dots per inch) is also displayed.&lt;/dd>
&lt;dt>alignment&lt;/dt>
&lt;dd>Select the alignment of the image on its area.&lt;/dd>
&lt;dt>new image area button&lt;/dt>
&lt;dd>Create a new image area. Drag and drop on the canvas to place it. If the option snap to grid is activated the area can be easily aligned to the grid lines. An image can be placed into this area by dragging it from the filmstrip and dropping it on the new area.&lt;/dd>
&lt;dt>delete image area button&lt;/dt>
&lt;dd>Remove the currently selected image area from the composition.&lt;/dd>
&lt;dt>clear layout button&lt;/dt>
&lt;dd>Remove all the image areas leaving the canvas empty.&lt;/dd>
&lt;/dl>
&lt;p>The following four fields represent the position of currently selected area on the page &amp;ndash; the top/left corner on the first line and the width/height of the area on the second line.&lt;/p></description></item><item><title>Raw overexposed warning</title><link>https://ansel.photos/en/doc/views/toolboxes/raw-overexposed/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>5a0b8084e13c6d047e250f8f125c3eee0aed9fb199a5f263b6e9755d77d88751</guid><description>&lt;p>Highlight areas of the image where color channels of the raw input file are clipped.&lt;/p>
&lt;p>Clipped color channels imply an overexposed image with loss of information in the affected areas. Some of this information may be recoverable using the
&lt;a href="https://ansel.photos/en/doc/views/darkroom/modules/highlight-reconstruction/" title="" rel="dofollow" >&lt;em>highlight reconstruction&lt;/em>&lt;/a>,
&lt;a href="https://ansel.photos/en/doc/views/darkroom/modules/color-reconstruction/" title="" rel="dofollow" >&lt;em>color reconstruction&lt;/em>&lt;/a> or
&lt;a href="https://ansel.photos/en/doc/views/darkroom/modules/filmic-rgb/" title="" rel="dofollow" >&lt;em>filmic rgb&lt;/em>&lt;/a> modules.&lt;/p>
&lt;p>Click on the
&lt;figure class="img-wrapper " id="raw-overexposed-iconjpg">
&lt;button class="open-lightbox-button" onclick="lightbox(&amp;#34;raw-overexposed-iconjpg&amp;#34;)">
&lt;i class="fa fa-expand-alt open-lightbox-icon fa-fw">&lt;/i>
&lt;/button>
&lt;button class="open-link-button" onclick="window.open('https:\/\/ansel.photos\/raw-overexposed-icon.jpg', '_blank');">
&lt;i class="fa fa-external-link-alt open-link-icon fa-fw">&lt;/i>
&lt;/button>
&lt;div class="img-container" onclick="lightbox(&amp;#34;raw-overexposed-iconjpg&amp;#34;)" style="cursor: pointer;" >
&lt;img src=https://ansel.photos/raw-overexposed-icon.jpg alt="image"
style=" "
decoding="async" loading="lazy"width="59" height="62"/>
&lt;/div>
&lt;/figure>
icon to show/hide the warning overlay. Right-click on the icon to open a dialog containing the following configuration parameters.&lt;/p></description></item><item><title>Scopes</title><link>https://ansel.photos/en/doc/views/toolboxes/scopes/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Thu, 12 Oct 2023 00:00:00 +0000</updated><guid>786c601539d8c482aaf31641994f3597ef6b2bacfd42ced1913e5cee88d1b8c1</guid><description>&lt;p>This module provides various graphical depictions of the developed image&amp;rsquo;s light levels or
&lt;a href="https://ansel.photos/en/doc/color-management/color-dimensions/#definitions" title="" rel="dofollow" >chromaticity&lt;/a>.&lt;/p>
&lt;p>
&lt;figure class="img-wrapper " id="scopesjpg">
&lt;button class="open-lightbox-button" onclick="lightbox(&amp;#34;scopesjpg&amp;#34;)">
&lt;i class="fa fa-expand-alt open-lightbox-icon fa-fw">&lt;/i>
&lt;/button>
&lt;button class="open-link-button" onclick="window.open('https:\/\/ansel.photos\/scopes.jpg', '_blank');">
&lt;i class="fa fa-external-link-alt open-link-icon fa-fw">&lt;/i>
&lt;/button>
&lt;div class="img-container" onclick="lightbox(&amp;#34;scopesjpg&amp;#34;)" style="cursor: pointer;" >
&lt;img src=https://ansel.photos/scopes.jpg alt="image"
style=" "
decoding="async" loading="lazy"sizes="(max-width: 992px) 100vw, (max-width: 1200px) 66.67vw, 50vw" srcset="https://ansel.photos/scopes_hu_ad70ff30e514c84e.jpg 140w, https://ansel.photos/scopes_hu_93dbf0bf5a1ad583.jpg 264w, https://ansel.photos/scopes_hu_2a7e27f2d7751834.jpg 331w, https://ansel.photos/scopes_hu_f7dedc32b4edbb69.jpg 400w"width="452" height="217"/>
&lt;/div>
&lt;/figure>
&lt;/p>
&lt;p>Move the mouse over the panel to show buttons that allow you to adjust the display. The leftmost button cycles the mode between histogram, waveform scope, RGB parade scope, and vectorscope. The remaining buttons control how the plot for the current scope is drawn.&lt;/p></description></item><item><title>Snapshots</title><link>https://ansel.photos/en/doc/views/toolboxes/snapshots/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>0a067325ca6e37685cfa8d11f6da7ff6e1738f880b8efacf8dfa637635329f19</guid><description>&lt;p>Store development snapshots and compare with the current edit.&lt;/p>
&lt;p>A snapshot is a stored bitmap of the center image in the darkroom view. Snapshots can be taken at any point in the development process and later overlaid onto the current center view. This allows you to undertake a side by side comparison (by default left=snapshot, right=active edit) while you are tuning parameters of a module. This can also be combined with the
&lt;a href="https://ansel.photos/en/doc/views/toolboxes/history-stack/" title="" rel="dofollow" >history stack&lt;/a> module to compare a snapshot against different stages of development.&lt;/p></description></item><item><title>Soft proof</title><link>https://ansel.photos/en/doc/views/toolboxes/soft-proof/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Thu, 12 Oct 2023 00:00:00 +0000</updated><guid>582fd1e87343b50d3f37f345db0c0b6940359bd9a1f2d623a49944cce37d09f2</guid><description>&lt;p>View your image rendered using a selected color profile.&lt;/p>
&lt;p>Click the
&lt;figure class="img-wrapper " id="soft-proof-iconjpg">
&lt;button class="open-lightbox-button" onclick="lightbox(&amp;#34;soft-proof-iconjpg&amp;#34;)">
&lt;i class="fa fa-expand-alt open-lightbox-icon fa-fw">&lt;/i>
&lt;/button>
&lt;button class="open-link-button" onclick="window.open('https:\/\/ansel.photos\/soft-proof-icon.jpg', '_blank');">
&lt;i class="fa fa-external-link-alt open-link-icon fa-fw">&lt;/i>
&lt;/button>
&lt;div class="img-container" onclick="lightbox(&amp;#34;soft-proof-iconjpg&amp;#34;)" style="cursor: pointer;" >
&lt;img src=https://ansel.photos/soft-proof-icon.jpg alt="image"
style=" "
decoding="async" loading="lazy"width="61" height="58"/>
&lt;/div>
&lt;/figure>
icon to activate the soft proof display mode on your image. This allows you to preview your image rendered using a printer profile to see how colors will end up on the final print. You can also activate soft proof with the keyboard shortcut Ctrl+S. A message “soft proof&amp;quot; on the bottom left of your image tells you that you are in soft proof display mode.&lt;/p></description></item><item><title>Styles</title><link>https://ansel.photos/en/doc/views/toolboxes/styles/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>03abd7da6a0302d35294b23199c4c423d05f1555e013575787756f0a40b324db</guid><description>&lt;p>Create named styles from selected images&amp;rsquo;
&lt;a href="https://ansel.photos/en/doc/views/darkroom/pixelpipe/history-stack/" title="" rel="dofollow" >history stacks&lt;/a> and apply styles to selected images.&lt;/p>
&lt;p>Styles can either be created within this panel or in the
&lt;a href="https://ansel.photos/en/doc/views/darkroom/pixelpipe/history-stack/" title="" rel="dofollow" >history stack&lt;/a> module in the darkroom.&lt;/p>
&lt;p>A list of all available styles is displayed in the module. A search field above the list allows you to locate a style by name or description. This module also allows styles to be edited and deleted.&lt;/p>
&lt;p>Double-click on a style name to apply that style to all selected images. A style may also be applied to all selected images by pressing a shortcut key assigned to it (see
&lt;a href="https://ansel.photos/en/doc/preferences-settings/shortcuts/" title="" rel="dofollow" >preferences &amp;gt; shortcuts&lt;/a>) while in the lighttable or darkroom view.&lt;/p></description></item><item><title>Tagging</title><link>https://ansel.photos/en/doc/views/toolboxes/tagging/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>8fb6f7b2641b65c23caf5940979073f6803ff2ecddb2f53d402ec1b8f2090ccf</guid><description>&lt;p>Manage tags attached to images.&lt;/p>
&lt;p>Tags provide a means of adding information to images using a keyword dictionary. You can also manage tags as a hierarchical tree, which can be useful when their number becomes large.&lt;/p>
&lt;p>Tags are physically stored in
&lt;a href="https://ansel.photos/en/doc/views/lighttable/digital-asset-management/sidecar/" title="" rel="dofollow" >XMP sidecar files&lt;/a> as well as in Ansel&amp;rsquo;s library database and can be included in
&lt;a href="https://ansel.photos/en/doc/views/toolboxes/export/" title="" rel="dofollow" >exported&lt;/a> images.&lt;/p>
&lt;/section>
&lt;section id="definitions">
&lt;h2 class="text-left heading">
Definitions
&lt;span class="header-filet">&lt;/span>
&lt;/h2>
&lt;p>The following definitions assume that you have set up a single tag named &amp;ldquo;&lt;code>places|France|Nord|Lille&lt;/code>&amp;rdquo;.&lt;/p></description></item><item><title>Variables</title><link>https://ansel.photos/en/doc/variables/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>f0e5c6760779db90b83c67cfe3cefcb5a134e0c1a88eeeed3b2f3306188296d9</guid><description>&lt;p>Ansel supports variable substitution in a number of modules and preference settings. For example:&lt;/p>
&lt;ul>
&lt;li>Defining file names in the
&lt;a href="https://ansel.photos/en/doc/views/toolboxes/export/" title="" rel="dofollow" >export&lt;/a> module and
&lt;a href="https://ansel.photos/en/doc/getting-started/import/" title="" rel="dofollow" >import tool&lt;/a>,&lt;/li>
&lt;li>Displaying image information in the darkroom&amp;rsquo;s image information line,&lt;/li>
&lt;li>Displaying image information in the lighttable&amp;rsquo;s overlays and tooltips (see
&lt;a href="https://ansel.photos/en/doc/preferences-settings/lighttable/" title="" rel="dofollow" >preferences &amp;gt; lighttable&lt;/a>)&lt;/li>
&lt;li>Placing text on an image in the
&lt;a href="https://ansel.photos/en/doc/views/darkroom/modules/watermark/" title="" rel="dofollow" >&lt;em>watermark&lt;/em>&lt;/a> processing module.&lt;/li>
&lt;/ul>
&lt;p>Most, if not all text entries that use variables implement auto-completion as soon as you start typing &lt;code>$(&lt;/code>.&lt;/p></description></item><item><title>Preferences &amp; Settings</title><link>https://ansel.photos/en/doc/preferences-settings/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>2682b87911b76871f3022d51833a4c844d1ecc33bca17926454da3d8d25df685</guid><description>&lt;p>Ansel comes with a number of user-configurable preferences. These can be adjusted in the preferences dialog, which can be reached via &lt;em>Edit &amp;gt; Preferences&lt;/em> in the global menu. Preferences are separated into tabs, each of which is described in more detail in the following sections.&lt;/p>
&lt;p>Any altered settings (i.e. those that differ from their default state) are highlighted with a bullet beside them. If you change a setting that needs a restart to take effect, a message will appear as a reminder after you exit the preferences dialog.&lt;/p></description></item><item><title>General</title><link>https://ansel.photos/en/doc/preferences-settings/general/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Thu, 12 Oct 2023 00:00:00 +0000</updated><guid>5837e11ecca2927a2beb0faeef39002f3a8014bde09a586df8029b3291b700a2</guid><description>&lt;p>Control the overall look and feel of Ansel.&lt;/p>
&lt;dl>
&lt;dt>interface language&lt;/dt>
&lt;dd>Set the language of the user interface. The system default is marked with an * (needs a restart)&lt;/dd>
&lt;dt>theme&lt;/dt>
&lt;dd>Set the theme for the user interface. Aside from any aesthetic considerations, the recommended interface color for color evaluation is middle gray. Visual perception is affected by ambient brightness, and a low user interface brightness causes all kinds of illusions. Using a dark interface to retouch photos can therefore lead to excessive retouching (abuse of contrast and saturation) and to a photo that is too dark when printed. It is therefore highly recommended that you use one of the &amp;ldquo;grey&amp;rdquo; themes for retouching work as these are designed so that the user interface approximates middle gray (default &amp;ldquo;Ansel&amp;rdquo;).&lt;/dd>
&lt;dt>use system font size&lt;/dt>
&lt;dd>Select this option to use the font size defined by your system. If unchecked, you may enter a custom font size in the box below (default on).&lt;/dd>
&lt;dt>font size in points&lt;/dt>
&lt;dd>If the &amp;ldquo;use system font size&amp;rdquo; option is switched off, enter a font size (in points) for Ansel to use. The font size will be changed immediately.&lt;/dd>
&lt;dt>GUI controls and text DPI&lt;/dt>
&lt;dd>Adjust the global GUI resolution to rescale controls, buttons, labels, etc. Increase for a magnified GUI, decrease to fit more content in the window. Set to -1 to use the system-defined global resolution. The default is 96 DPI on most systems. (needs a restart)&lt;/dd>
&lt;/dl>
&lt;/section>
&lt;section id="css-theme-modifications">
&lt;h2 class="text-left heading">
CSS theme modifications
&lt;span class="header-filet">&lt;/span>
&lt;/h2>
&lt;p>In addition to selecting a pre-built theme you can also apply additional CSS customisations of your own to tweak the look-and-feel of Ansel.&lt;/p></description></item><item><title>Lighttable</title><link>https://ansel.photos/en/doc/preferences-settings/lighttable/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Thu, 12 Oct 2023 00:00:00 +0000</updated><guid>720d2003787397ca697c0977970019154ac2ad81d22196309a6d5f0a0f66d14f</guid><description>&lt;p>Control functionality in the
&lt;a href="https://ansel.photos/en/doc/views/lighttable/" title="" rel="dofollow" >lighttable&lt;/a> view and modules.&lt;/p>
&lt;/section>
&lt;section id="general">
&lt;h2 class="text-left heading">
General
&lt;span class="header-filet">&lt;/span>
&lt;/h2>
&lt;dl>
&lt;dt>hide built-in presets for utility modules&lt;/dt>
&lt;dd>If enabled, only user-defined presets will be shown in presets menu for utility modules &amp;ndash; built-in presets will be hidden (default off).&lt;/dd>
&lt;dt>show image time with milliseconds&lt;/dt>
&lt;dd>Choose whether to include milliseconds when displaying time values (default off). If set, milliseconds are shown in the
&lt;a href="https://ansel.photos/en/doc/views/toolboxes/image-information/" title="" rel="dofollow" >image information&lt;/a> module and can also be used in the
&lt;a href="https://ansel.photos/en/doc/views/toolboxes/geotagging/" title="" rel="dofollow" >geotagging&lt;/a> module.&lt;/dd>
&lt;/dl>
&lt;/section>
&lt;section id="thumbnails">
&lt;h2 class="text-left heading">
Thumbnails
&lt;span class="header-filet">&lt;/span>
&lt;/h2>
&lt;dl>
&lt;dt>use raw file instead of embedded JPEG from size&lt;/dt>
&lt;dd>When generating thumbnails for images that have not yet been processed in the darkroom, if the thumbnail size is greater than this value, generate it by processing the raw image data. If the thumbnail is below this size, use the JPEG preview image embedded in the raw file. Once an image has been processed in the darkroom, thumbnails will always be generated from raw data (you can revert back to the JPEG preview by discarding history). To render thumbnails with the best quality choose &amp;ldquo;always&amp;rdquo;.&lt;/dd>
&lt;dt>high quality processing from size&lt;/dt>
&lt;dd>If the thumbnail size is greater than this value and is being generated from raw data, it will be processed using the full quality rendering path, which is better but slower (default 720p). To render thumbnails with the best quality, choose &amp;ldquo;always&amp;rdquo;.&lt;/dd>
&lt;dt>delimiters for size categories&lt;/dt>
&lt;dd>Size categories are used to allow different thumbnail overlays to be shown depending on the thumbnail size. A pipe delimited set of values defines at what image sizes the category changes. The default value of &amp;ldquo;120|400&amp;rdquo; means that there will be 3 categories of thumbnail: 0-120px, 120-400px and &amp;gt;400px.&lt;/dd>
&lt;/dl></description></item><item><title>Darkroom</title><link>https://ansel.photos/en/doc/preferences-settings/darkroom/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>d481ea943ec206ab5e5f060ad4125c85a45d00581f38d1555babe03bfdefb939</guid><description>&lt;p>Control functionality in the
&lt;a href="https://ansel.photos/en/doc/views/darkroom/" title="" rel="dofollow" >darkroom&lt;/a> view and associated modules.&lt;/p>
&lt;/section>
&lt;section id="general">
&lt;h2 class="text-left heading">
General
&lt;span class="header-filet">&lt;/span>
&lt;/h2>
&lt;dl>
&lt;dt>pen pressure control for brush masks&lt;/dt>
&lt;dd>Controls how the pressure reading of a graphics tablet impacts newly generated
&lt;a href="https://ansel.photos/en/doc/views/darkroom/masking-and-blending/masks/drawn/" title="" rel="dofollow" >drawn mask&lt;/a> brush strokes. You can control the brush width, hardness and opacity. “Absolute” control means that the pressure reading directly defines the attribute with a value between 0% and 100%. “Relative” means that the pressure reading adjusts the attribute between zero and the pre-defined default value (default off).&lt;/dd>
&lt;dt>smoothing of brush strokes&lt;/dt>
&lt;dd>Sets the level for smoothing of
&lt;a href="https://ansel.photos/en/doc/views/darkroom/masking-and-blending/masks/drawn/" title="" rel="dofollow" >drawn mask&lt;/a> brush strokes. Stronger smoothing leads to fewer nodes and easier editing at the expense of lower accuracy.&lt;/dd>
&lt;dt>scroll down to increase mask parameters&lt;/dt>
&lt;dd>By default, scrolling your mouse up increases the value of the relevant shape parameters in
&lt;a href="https://ansel.photos/en/doc/views/darkroom/masking-and-blending/masks/drawn/" title="" rel="dofollow" >drawn masks&lt;/a>. Set this preference to reverse the behavior (default off).&lt;/dd>
&lt;dt>pattern for the image information line&lt;/dt>
&lt;dd>Set the information to be displayed in the image information line, at the right of the top-most toolbar. You can use any variables in the
&lt;a href="https://ansel.photos/en/doc/variables/" title="" rel="dofollow" >variables&lt;/a> section as well as &lt;code>$(NL)&lt;/code> for a new line. You can also include
&lt;a href="https://ansel.photos/en/doc/variables/#formatting" title="" rel="dofollow" >formatting&lt;/a> (bold, italic, colors etc).&lt;/dd>
&lt;dt>border around image in darkroom mode&lt;/dt>
&lt;dd>Display the center image in darkroom mode with an outside border of the given number of pixels (default 20).&lt;/dd>
&lt;dt>show loading screen between images&lt;/dt>
&lt;dd>Show gray loading screen when navigating between images in the darkroom. Switch this option off to just show a simple toast message and leave the previous image in place until the next image is loaded. Note that switching this option off can be very useful to quickly compare duplicate images, however, there might be issues with long loading times (leading you to think the next image has already loaded) and you may observe visual artifacts while the next image is loading (default on).&lt;/dd>
&lt;/dl>
&lt;/section>
&lt;section id="modules">
&lt;h2 class="text-left heading">
Modules
&lt;span class="header-filet">&lt;/span>
&lt;/h2>
&lt;dl>
&lt;dt>display of individual color channels&lt;/dt>
&lt;dd>Control how individual color channels are displayed when activated in the
&lt;a href="https://ansel.photos/en/doc/views/darkroom/masking-and-blending/masks/parametric/" title="" rel="dofollow" >parametric masks&lt;/a> feature. You can choose between “false color” and “gray scale” (default &amp;ldquo;false color&amp;rdquo;).&lt;/dd>
&lt;dt>hide built-in presets for processing modules&lt;/dt>
&lt;dd>If enabled, only user-defined presets will be shown in the presets menu for processing modules &amp;ndash; built-in presets will be hidden (default off).&lt;/dd>
&lt;dt>show the guides widget in modules UI&lt;/dt>
&lt;dd>Enable this to show the local
&lt;a href="https://ansel.photos/en/doc/views/toolboxes/guides-overlays/#local-guides" title="" rel="dofollow" >guides &amp;amp; overlays&lt;/a> interface directly within the UI of the modules that support it (default on).&lt;/dd>
&lt;dt>show right-side buttons in processing module headers&lt;/dt>
&lt;dd>Choose whether to show the four buttons (mask indicator, multi-instance menu, reset, presets menu) on the right-hand-side of the module header for processing modules. These buttons will always appear when the mouse is over the module. At other times they will be shown or hidden according to this preference selection:&lt;/dd>
&lt;dd>&lt;ul>
&lt;li>&lt;em>always&lt;/em>: always show all buttons&lt;/li>
&lt;/ul>
&lt;/dd>
&lt;dd>&lt;ul>
&lt;li>&lt;em>active&lt;/em>: only show the buttons when the mouse is over the module&lt;/li>
&lt;/ul>
&lt;/dd>
&lt;dd>&lt;ul>
&lt;li>&lt;em>dim&lt;/em>: buttons are dimmed when mouse is not over the module&lt;/li>
&lt;/ul>
&lt;/dd>
&lt;dd>&lt;ul>
&lt;li>&lt;em>auto&lt;/em>: hide the buttons when the panel is narrow&lt;/li>
&lt;/ul>
&lt;/dd>
&lt;dd>&lt;ul>
&lt;li>&lt;em>fade&lt;/em>: fade out all buttons when the panel narrows&lt;/li>
&lt;/ul>
&lt;/dd>
&lt;dd>&lt;ul>
&lt;li>&lt;em>fit&lt;/em>: hide all the buttons if the module name doesn&amp;rsquo;t fit&lt;/li>
&lt;/ul>
&lt;/dd>
&lt;dd>&lt;ul>
&lt;li>&lt;em>smooth&lt;/em>: fade out all buttons in one header simultaneously&lt;/li>
&lt;/ul>
&lt;/dd>
&lt;dd>&lt;ul>
&lt;li>&lt;em>glide&lt;/em>: gradually hide individual buttons as needed&lt;/li>
&lt;/ul>
&lt;/dd>
&lt;dd>(default &lt;em>always&lt;/em>)&lt;/dd>
&lt;dt>prompt for name on addition of new instance&lt;/dt>
&lt;dd>If enabled, when creating a new instance of a processing module, a prompt will be immediately displayed allowing you to set a name for the new instance (default on).&lt;/dd>
&lt;/dl></description></item><item><title>Other views</title><link>https://ansel.photos/en/doc/preferences-settings/other-views/</link><pubDate>Sat, 21 Jan 2023 00:00:00 +0000</pubDate><updated>Wed, 11 Oct 2023 00:00:00 +0000</updated><guid>588197e18ee0717c139ac1a6671104083551f54612ebeb99ae5cd334dfe9a1d7</guid><description>&lt;p>Enable optional views:&lt;/p>
&lt;ul>
&lt;li>
&lt;a href="https://ansel.photos/en/doc/views/map/" title="" rel="dofollow" >map&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://ansel.photos/en/doc/views/slideshow/" title="" rel="dofollow" >slideshow&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://ansel.photos/en/doc/views/print/" title="" rel="dofollow" >print&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Once you restart Ansel the enabled view(s) will be available in the &lt;em>Ateliers&lt;/em> menu.&lt;/p>
&lt;p>These views are all hidden by default to spare some computing resources.&lt;/p></description></item><item><title>Processing</title><link>https://ansel.photos/en/doc/preferences-settings/processing/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Thu, 12 Oct 2023 00:00:00 +0000</updated><guid>391f2a82969957d91fc02a16436dfc612d53d2993810a5a29ece0f5d4ae881e0</guid><description>&lt;p>Control how images are processed.&lt;/p>
&lt;/section>
&lt;section id="image-processing">
&lt;h2 class="text-left heading">
Image processing
&lt;span class="header-filet">&lt;/span>
&lt;/h2>
&lt;dl>
&lt;dt>always use LittleCMS 2 to apply output color profile&lt;/dt>
&lt;dd>If this option is activated, Ansel will use the LittleCMS 2 system library to apply the output color profile instead of its own internal routines. This is significantly slower than the default but might give more accurate results in some cases.&lt;/dd>
&lt;dd>
&lt;p>If the given ICC is LUT-based or contains both a LUT and a matrix, Ansel will use LittleCMS 2 to render the colors regardless of this parameter&amp;rsquo;s value (default off).&lt;/p></description></item><item><title>Security</title><link>https://ansel.photos/en/doc/preferences-settings/security/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>58555da6b7997ef7a9ff257bb49aa7ef26dffc6900dc27af6f35bf14f2a2af82</guid><description>&lt;p>Control whether warning messages are shown before undertaking certain activities.&lt;/p>
&lt;/section>
&lt;section id="general">
&lt;h2 class="text-left heading">
General
&lt;span class="header-filet">&lt;/span>
&lt;/h2>
&lt;dl>
&lt;dt>ask before removing images from the library&lt;/dt>
&lt;dd>Always ask before removing image information from Ansel&amp;rsquo;s library database, where the xmp file is retained (default on).&lt;/dd>
&lt;dt>ask before deleting images from disk&lt;/dt>
&lt;dd>Always ask before deleting an image file (default on).&lt;/dd>
&lt;dt>ask before discarding history stack&lt;/dt>
&lt;dd>Always ask before discarding the history stack of an image (default on).&lt;/dd>
&lt;dt>try to use trash when deleting images&lt;/dt>
&lt;dd>Instead of physically deleting images from disk, attempt to put them into the system&amp;rsquo;s trash bin (default on).&lt;/dd>
&lt;dt>ask before moving images from film roll folder&lt;/dt>
&lt;dd>Always ask before moving an image file (default on).&lt;/dd>
&lt;dt>ask before copying images to new film roll folder&lt;/dt>
&lt;dd>Always ask before copying an image file to a new location (default on).&lt;/dd>
&lt;dt>ask before removing empty folders&lt;/dt>
&lt;dd>Always ask before removing any empty folder. This can happen after moving or deleting images (default off).&lt;/dd>
&lt;dt>ask before deleting a tag&lt;/dt>
&lt;dd>Always ask before deleting a tag from an image (default on).&lt;/dd>
&lt;dt>ask before deleting a style&lt;/dt>
&lt;dd>Always ask before deleting a style (default on).&lt;/dd>
&lt;dt>ask before deleting a preset&lt;/dt>
&lt;dd>Always ask before deleting a preset (default on).&lt;/dd>
&lt;dt>ask before exporting in overwrite mode&lt;/dt>
&lt;dd>Always ask before
&lt;a href="https://ansel.photos/en/doc/views/toolboxes/export/" title="" rel="dofollow" >exporting&lt;/a> images in overwrite mode.&lt;/dd>
&lt;/dl>
&lt;/section>
&lt;section id="other">
&lt;h2 class="text-left heading">
Other
&lt;span class="header-filet">&lt;/span>
&lt;/h2>
&lt;dl>
&lt;dt>password storage backend to use&lt;/dt>
&lt;dd>The backend to use for password storage. Options: “auto” (default), “none”, “libsecret”, “kwallet”.&lt;/dd>
&lt;dt>executable for playing audio files&lt;/dt>
&lt;dd>Define an external program which is used in the lighttable view to play audio files that some cameras record to keep notes for images (default “aplay”).&lt;/dd>
&lt;/dl></description></item><item><title>Performance</title><link>https://ansel.photos/en/doc/preferences-settings/performance/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>2ded2184b7b5d6d681b0203979d93e2786e8752ca714dce82eb0475d053a6a25</guid><description/></item><item><title>Opencl</title><link>https://ansel.photos/en/doc/preferences-settings/performance/opencl/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>14a2eec2574094db50bc91fe32f675090010289b3bc937a7577d9a5556bb2c73</guid><description/></item><item><title>The background</title><link>https://ansel.photos/en/doc/preferences-settings/performance/opencl/background/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>0cce4e254e2f46b3bccfde4822d40497bd87730ea5c8c9f306f034d54b603ce2</guid><description>&lt;p>Processing high resolution images is a demanding task requiring a modern computer. In terms of both memory and CPU power, getting the best out of a typical 15, 20 or 25 Megapixel image can quickly take your computer to its limits.&lt;/p>
&lt;p>Ansel&amp;rsquo;s requirements are no exception. All calculations are performed on 4 x 32bit floating point numbers. This is slower than “ordinary” 8 or 16 bit integer algebra, but eliminates all problems of tonal breaks or loss of information.&lt;/p></description></item><item><title>How opencl works</title><link>https://ansel.photos/en/doc/preferences-settings/performance/opencl/how-opencl-works/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>4ae62e23e53463cf6b2322cc148dcebd9b995dcb0e6b8d17ae7af052f546f994</guid><description>&lt;p>As you can imagine, the hardware architecture of GPUs can vary significantly. There are different manufacturers, and even different generations of GPUs from the same manufacturer may not be comparable. At the same time GPU manufacturers don&amp;rsquo;t normally disclose all the hardware details of their products to the public. One of the consequences of this is the need to use proprietary drivers under Linux, if you want to take full advantage of your graphics card.&lt;/p></description></item><item><title>Activating opencl in Ansel</title><link>https://ansel.photos/en/doc/preferences-settings/performance/opencl/activate-opencl/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>5c2c5aed13e7375c75e51b07f9357358bd8cd4307e422502a7b7bafe643aadec</guid><description>&lt;p>Using OpenCL in Ansel requires that your PC is equipped with a suitable graphics card and that it has the required libraries in place. Most modern graphics cards from NVIDIA and AMD come with full OpenCL support. The OpenCL compiler is normally shipped as part of the proprietary graphics driver and is used as a dynamic library called &lt;code>libOpenCL.so&lt;/code>. This library must be in a folder where it can be found by your system&amp;rsquo;s dynamic linker.&lt;/p></description></item><item><title>Setting up opencl</title><link>https://ansel.photos/en/doc/preferences-settings/performance/opencl/setting-up/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>d98d6cc370de443083fde8d12713671a32ec2a3312df3dc900a691a287ff6641</guid><description>&lt;p>The huge diversity of systems and the marked differences between OpenCL vendors and driver versions makes it impossible to give an comprehensive overview of how to setup OpenCL. We only can give you an example, in this case for NVIDIA driver version 331.89 on Ubuntu 14.04. We hope that this will serve as a basic introduction and will help you to solve any problems specific to your setup.&lt;/p>
&lt;p>The principle OpenCL function flow is like this:&lt;/p></description></item><item><title>Possible problems &amp; solutions</title><link>https://ansel.photos/en/doc/preferences-settings/performance/opencl/problems-solutions/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>eb56afce99c3f52d5eb0a3966e816ffa7d3930b145f2f8a1d2bdf2aafa6abd6a</guid><description>&lt;p>Ansel will detect OpenCL run-time errors automatically. On detecting an error, it will then reprocess everything on the CPU. While this will slow down processing it should not affect the end result.&lt;/p>
&lt;p>There can be various reasons why OpenCL might fail during the initialization phase. OpenCL depends on hardware requirements and on the presence of certain drivers and libraries. In addition all these have to fit in terms of maker, model and revision number. If anything does not fit (e.g. your graphics driver &amp;ndash; loaded as a kernel module &amp;ndash; does not match the version of your &lt;code>libOpenCL.so&lt;/code>) OpenCL support will likely not be available.&lt;/p></description></item><item><title>Scheduling profile</title><link>https://ansel.photos/en/doc/preferences-settings/performance/opencl/scheduling-profile/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>672553a9421fca1746595a0d00d127d404e65b7a13fb6e8fa43ec30616c82ded</guid><description>&lt;p>Ansel can use the CPU and one or several OpenCL capable GPUs. Depending on the relative performance of these devices, users can choose among certain scheduling profiles to optimize performance. This is achieved by setting the configuration parameter
&lt;a href="https://ansel.photos/en/doc/preferences-settings/processing/#cpu-gpu-memory" title="" rel="dofollow" >Preferences &amp;gt; Processing &amp;gt; CPU, GPU, Memory &amp;gt; OpenCL scheduling profile&lt;/a>, which offers the following choices:&lt;/p>
&lt;dl>
&lt;dt>default&lt;/dt>
&lt;dd>If an OpenCL-capable GPU is found Ansel uses it for processing the center image view while the
&lt;a href="https://ansel.photos/en/doc/views/toolboxes/navigation/" title="" rel="dofollow" >navigation preview window&lt;/a> is processed on the CPU in parallel. This is the preferred setting for systems with a reasonably fast CPU and a moderately fast GPU. The exact allocation of devices to the various pixelpipe types can be finetuned with the “opencl_device_priority” configuration parameter (see
&lt;a href="https://ansel.photos/en/doc/preferences-settings/performance/opencl/multiple-devices/" title="" rel="dofollow" >multiple devices&lt;/a>).&lt;/dd>
&lt;dt>very fast GPU&lt;/dt>
&lt;dd>With this scheduling profile Ansel processes the center image view and the preview window on the GPU sequentially. This is the preferred setting for systems with a GPU that strongly outperforms the CPU.&lt;/dd>
&lt;dt>multiple GPUs&lt;/dt>
&lt;dd>This setting addresses systems with multiple GPUs whose relative performance does not differ significantly. Whenever a processing job is started Ansel uses any currently idle GPU but not the CPU. Users of systems with a variety of GPUs will need better control on their relative priority. They would be better off selecting the “default” profile and fine-tuning their system with the “opencl_device_priority” configuration parameter (see
&lt;a href="https://ansel.photos/en/doc/preferences-settings/performance/opencl/multiple-devices/" title="" rel="dofollow" >multiple devices&lt;/a>).&lt;/dd>
&lt;/dl>
&lt;p>On first start-up or after any detected change in the GPU configuration of your system Ansel tries to identify the best suited profile for you. You can change it at any time in
&lt;a href="https://ansel.photos/en/doc/preferences-settings/processing/#cpu-gpu-memory" title="" rel="dofollow" >Preferences &amp;gt; Processing &amp;gt; CPU, GPU, Memory&lt;/a>.&lt;/p></description></item><item><title>Multiple devices</title><link>https://ansel.photos/en/doc/preferences-settings/performance/opencl/multiple-devices/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>08583ae19d12bb762d7b6d71eecebdbd8b151d30b77a0d1aebac0db14896368f</guid><description>&lt;p>The scheduling of OpenCL devices can be optimized on most systems using the “OpenCL scheduling profile” settings. However, if your system is equipped with more than one GPU, you might want to set the relative device priority manually. To do this you need to select the “default” scheduling profile and change the settings in the “opencl_device_priority” configuration parameter.&lt;/p>
&lt;p>It is important to understand how Ansel uses OpenCL devices. Each processing sequence of an image &amp;ndash; to convert an input to the final output using a history stack &amp;ndash; is run in a pixelpipe. There are four different types of pixelpipe in Ansel. One type is responsible for processing the center image view (or full view) in darkroom mode, another pixelpipe processes the preview image (navigation window). There can be one of each of these two pixelpipes running at any time, with the full and preview pixelpipes running in parallel. In addition there can be multiple parallel pixelpipes performing file exports as well as multiple parallel pixelpipes generating thumbnails. If an OpenCL device is available, Ansel dynamically allocates it to one specific pixelpipe for one run and releases it afterwards.&lt;/p></description></item><item><title>Opencl still does not run for me</title><link>https://ansel.photos/en/doc/preferences-settings/performance/opencl/still-doesnt-work/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>9904328f28d260a0958c087f6a3358713e2694e40cbe4b5d7f91a63e13d51942</guid><description>&lt;p>As has been mentioned, OpenCL systems come with a huge variety of setups: different GPU manufacturers and models, varying amounts of GPU memory, different drivers, different distributions etc..&lt;/p>
&lt;p>Many of the potential problems will only appear with very specific combinations of these factors. As the Ansel developers only have access to a small fraction of these variations, please understand that we might not be able to fix your specific problem. There is not much we can do if we are unable to reproduce your issue.&lt;/p></description></item><item><title>Memory &amp; performance tuning</title><link>https://ansel.photos/en/doc/preferences-settings/performance/mem-performance/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>784cdfd4fbe92eb9702a5defae09a18dbbeb4c7044f011137b5586118a137d89</guid><description>&lt;/section>
&lt;section id="memory-requirements">
&lt;h2 class="text-left heading">
Memory requirements
&lt;span class="header-filet">&lt;/span>
&lt;/h2>
&lt;p>Processing a raw image in Ansel requires a great deal of system memory. A simple calculation makes this clear: For a 20 megapixel image, Ansel requires a 4x32-bit floating point cell to store each pixel, meaning that each full image of this size will require approximately 300MB of memory just to store the image data. In order to actually process this image through a given module, Ansel needs at least two buffers (input and output) of this size, with more complex modules potentially requiring several additional buffers for intermediate data. Without further optimization, anything between 600MB and 3GB of memory might be required to store and process image data as the pixelpipe executes. On top of this is Ansel&amp;rsquo;s code segment, the code and data of any dynamically-linked system libraries, as well as further buffers that Ansel uses to store intermediate states (cache) for quick access during interactive work.&lt;/p></description></item><item><title>Storage</title><link>https://ansel.photos/en/doc/preferences-settings/storage/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>72a5235b345f8175ee208f0f525649dc299263ece2a9fe6e03841e0468388578</guid><description>&lt;/section>
&lt;section id="database">
&lt;h2 class="text-left heading">
Database
&lt;span class="header-filet">&lt;/span>
&lt;/h2>
&lt;dl>
&lt;dt>check for database maintenance&lt;/dt>
&lt;dd>Indicates when darktable should check for database fragmentation and perform maintenance. Options are &amp;ldquo;never&amp;rdquo;, &amp;ldquo;on startup&amp;rdquo;, &amp;ldquo;on close&amp;rdquo; and &amp;ldquo;on both&amp;rdquo;. Each of these is also available with an additional &amp;ldquo;(don&amp;rsquo;t ask)&amp;rdquo; option to perform the checks automatically without prompting (default &amp;ldquo;on close&amp;rdquo;).&lt;/dd>
&lt;dt>database fragmentation ratio threshold&lt;/dt>
&lt;dd>Fragmentation ratio (in per cent) above which database maintenance should be performed (subject to the selection made in the option above) (default 25).&lt;/dd>
&lt;dt>create database snapshot&lt;/dt>
&lt;dd>Specifies how often Ansel should create database snapshots. Options are &amp;ldquo;never&amp;rdquo;, &amp;ldquo;once a month&amp;rdquo;, &amp;ldquo;once a week&amp;rdquo;, &amp;ldquo;once a day&amp;rdquo; and &amp;ldquo;on close&amp;rdquo; (default &amp;ldquo;once a week&amp;rdquo;)&lt;/dd>
&lt;dt>how many snapshots to keep&lt;/dt>
&lt;dd>Number of snapshots to keep after creating a new snapshot, not counting database backups taken when moving between Ansel versions. Enter &amp;ldquo;-1&amp;rdquo; to store an unlimited number of snapshots. (default 10)&lt;/dd>
&lt;/dl>
&lt;/section>
&lt;section id="xmp">
&lt;h2 class="text-left heading">
Xmp
&lt;span class="header-filet">&lt;/span>
&lt;/h2>
&lt;dl>
&lt;dt>write sidecar file for each image&lt;/dt>
&lt;dd>XMP files provide a redundant method of saving the changes that you have made to an image, in addition to the changes saved to Ansel&amp;rsquo;s database. This option allows you to choose when to write these files. Choose from:&lt;/dd>
&lt;dd>
&lt;ul>
&lt;li>&lt;em>never&lt;/em>: Don&amp;rsquo;t write XMP files. This can be useful if you are running multiple version of Ansel for development/testing purposes but is not normally recommended&lt;/li>
&lt;/ul>
&lt;/dd>
&lt;dd>&lt;ul>
&lt;li>&lt;em>on import&lt;/em>: An XMP file will be written as soon as you add an image to Ansel&amp;rsquo;s library and will be subsequently updated each time you edit it&lt;/li>
&lt;/ul>
&lt;/dd>
&lt;dd>&lt;ul>
&lt;li>&lt;em>after edit&lt;/em>: An XMP file will be written the first time you perform an edit on an image and will be updated on each subsequent edit. Importing will not generate an XMP file by default.&lt;/li>
&lt;/ul>
&lt;/dd>
&lt;dd>
&lt;p>It&amp;rsquo;s strongly recommended that you choose either &amp;ldquo;on import&amp;rdquo; or &amp;ldquo;after edit&amp;rdquo;. XMP files provide a useful fail-safe so that you don&amp;rsquo;t lose data if your database becomes corrupted. Backing up your raw file plus the accompanying XMP file will allow you to fully restore your work at a later date by re-importing your edit history back into Ansel (default &amp;ldquo;on import&amp;rdquo;).&lt;/p></description></item><item><title>Miscellaneous</title><link>https://ansel.photos/en/doc/preferences-settings/miscellaneous/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>0f1f05350a8147eaa9387239e3a1c0657dd5853deb4c37b4558840915edeac23</guid><description>&lt;/section>
&lt;section id="interface">
&lt;h2 class="text-left heading">
Interface
&lt;span class="header-filet">&lt;/span>
&lt;/h2>
&lt;dl>
&lt;dt>load default shortcuts at startup&lt;/dt>
&lt;dd>When launching the application, Ansel loads default shortcuts first, and then loads user-defined shortcuts on top. This allows default shortcuts to be overridden with a new action but prevents them from being deleted (since the deleted shortcut will be automatically reloaded on the next restart). Deactivate this preference to stop loading default shortcuts on startup &amp;ndash; only load the user-defined ones (including any defaults that you have not subsequently deleted or overridden). This makes deletion easier but also means that you will not benefit from new shortcuts added in future versions without first re-enabling this preference (default on).&lt;/dd>
&lt;dt>scale slider step with min/max&lt;/dt>
&lt;dd>When activated, the default step-size, when altering sliders, will depend on the current min/max values for that slider (default on).&lt;/dd>
&lt;dt>sort built-in presets first&lt;/dt>
&lt;dd>Choose how the presets menu is sorted. If this option is enabled, built-in presets are shown first. If the option is disabled, user presets are shown first (default on).&lt;/dd>
&lt;dt>always show panels&amp;rsquo; scrollbars&lt;/dt>
&lt;dd>Defines whether the panel scrollbars should be always visible or activated only depending on the panel content (default on). (needs a restart)&lt;/dd>
&lt;dt>position of the scopes module&lt;/dt>
&lt;dd>Choose whether to show the
&lt;a href="https://ansel.photos/en/doc/views/toolboxes/scopes/" title="" rel="dofollow" >scopes&lt;/a> module in the left or right panel (default right). (needs a restart)&lt;/dd>
&lt;dt>method to use for getting the display profile&lt;/dt>
&lt;dd>This option allows the user to force Ansel to use a specific method to obtain the current display profile for
&lt;a href="https://ansel.photos/en/doc/color-management/" title="" rel="dofollow" >color management&lt;/a>. In the default setting “all”, Ansel will choose to query the X display server&amp;rsquo;s xatom or the colord system service. You can set this option to “xatom” or “colord” to enforce a specific method if the two methods give different results. You can run the
&lt;a href="https://ansel.photos/en/doc/cli/ansel-cmstest/" title="" rel="dofollow" >Ansel-cmstest&lt;/a> binary to examine your color management subsystem.&lt;/dd>
&lt;/dl>
&lt;/section>
&lt;section id="tags">
&lt;h2 class="text-left heading">
Tags
&lt;span class="header-filet">&lt;/span>
&lt;/h2>
&lt;dl>
&lt;dt>omit hierarchy in simple tag lists&lt;/dt>
&lt;dd>When exporting images any hierarchical tags are also added as a simple list of non-hierarchical tags to make them visible to some other programs. When this option is checked Ansel will only include the last part of the hierarchy and ignore the rest. So &lt;code>foo|bar|baz&lt;/code> will only add &lt;code>baz&lt;/code>.&lt;/dd>
&lt;/dl>
&lt;/section>
&lt;section id="shortcuts-with-multiple-instances">
&lt;h2 class="text-left heading">
Shortcuts with multiple instances
&lt;span class="header-filet">&lt;/span>
&lt;/h2>
&lt;p>It is possible to create multiple instances of many processing modules. In this scenario it is not always obvious which instance should be controlled by keyboard shortcut operations. The following options control rules that are applied (in order) to decide which module instance keyboard shortcuts should be applied to.&lt;/p></description></item><item><title>Shortcuts</title><link>https://ansel.photos/en/doc/preferences-settings/shortcuts/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>7a4872ce86cfd8f7c2f08cfbd4b5088fb1a996b9a89d1c69d6e1dba38d4e4edb</guid><description>&lt;p>Some actions in Ansel can be performed with a keyboard shortcut. A table of key shortcuts is available in &lt;em>Help &amp;gt; Table of key shortcuts&lt;/em>.&lt;/p>
&lt;p>&lt;strong>Note:&lt;/strong> The table shows different key shortcuts for different Views.&lt;/p>
&lt;/section>
&lt;section id="assigning-key-shortcuts">
&lt;h2 class="text-left heading">
Assigning key shortcuts
&lt;span class="header-filet">&lt;/span>
&lt;/h2>
&lt;p>For the time being shortcuts can only be defined or changed by editing your &lt;code>$HOME/.config/Ansel/shortcutsrc&lt;/code> file. There is no support for MIDI-devices in Ansel.&lt;/p>
&lt;/section>
&lt;section id="deleting-default-shortcuts">
&lt;h3 class="text-left heading">
Deleting default shortcuts
&lt;/h3>
&lt;p>When launching the application, Ansel loads default shortcuts first, and then loads user-defined shortcuts on top. This allows default shortcuts to be overridden with a new action but prevents them from being deleted (since the deleted shortcut will be automatically reloaded on the next restart).&lt;/p></description></item><item><title>Presets</title><link>https://ansel.photos/en/doc/preferences-settings/presets/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>c4e8687b44dddc10b91614500ce4b6a6cf19f1fda77998ef08f73444b9d09ec8</guid><description>&lt;p>This menu provides an overview of the presets that are defined for Ansel&amp;rsquo;s modules, and allows you to modify some of their properties.&lt;/p>
&lt;p>Pre-defined presets (those that are included by default within Ansel) are shown with a lock symbol. Their properties cannot be changed.&lt;/p>
&lt;p>User-defined presets can be imported from exported &lt;code>.dtpreset&lt;/code> files using the &amp;ldquo;import&amp;rdquo; button at the bottom of the screen. You can export &lt;em>all&lt;/em> user-defined presets to a single directory using the &amp;ldquo;export&amp;rdquo; button.&lt;/p></description></item><item><title>Lua options</title><link>https://ansel.photos/en/doc/preferences-settings/lua-options/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>8d131c26ba8f23c078e3795c7e43b89b38e6f74e69142d795db6a5f93d86b088</guid><description>&lt;dl>
&lt;dt>lua scripts installer don&amp;rsquo;t show again&lt;/dt>
&lt;dd>Check this box to hide the
&lt;a href="https://ansel.photos/en/doc/views/toolboxes/lua-scripts-installer/" title="" rel="dofollow" >lua scripts installer&lt;/a> in the lighttable if no lua scripts are installed.&lt;/dd>
&lt;/dl></description></item><item><title>Color management</title><link>https://ansel.photos/en/doc/color-management/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>a43ac5064e168bbfbc53822488a199526357abf4d1a2be4d985d6eac96101db5</guid><description>&lt;p>Ansel employs a fully color managed workflow:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>Input color specifications are taken from embedded or user-supplied ICC profiles or (in the case of raw files) from a library of camera-specific color matrices.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Ansel automatically reads the display profile of your monitor (if properly configured) for accurate on-screen color rendition. Multiple-screen setups are fully supported as long as a system service like colord is in place and properly configured to inform Ansel of the correct monitor profile.&lt;/p></description></item><item><title>Display profile</title><link>https://ansel.photos/en/doc/color-management/display-profile/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>267c1673b5b0f2e5ed42f33fda34c944d05f36f52f6cce10d61cce08d0a4c0bb</guid><description>&lt;p>For darktable to faithfully render colors on screen it needs to find the correct display profile for your monitor. In general this requires your monitor to be properly calibrated and profiled, and it needs the profile to be correctly installed on your system. darktable queries your X display server&amp;rsquo;s xatom as well as the system service colord (if available) for the right profile. If required you can enforce a specific method in
&lt;a href="https://ansel.photos/en/doc/preferences-settings/miscellaneous/" title="" rel="dofollow" >preferences &amp;gt; miscellaneous&lt;/a>.&lt;/p></description></item><item><title>Rendering method</title><link>https://ansel.photos/en/doc/color-management/rendering-method/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>0b3a5be9e484533d7529dbc3bcb8e10d7aeebf1ad7be855ff31b2743f9d570d4</guid><description>&lt;p>Ansel can render colors either with its own internal algorithms or by using the external library LittleCMS2. Ansel&amp;rsquo;s internal method is, by an order of magnitude, faster than the external one. The external option gives you a choice of the rendering intent and might offer a slightly higher accuracy in some cases.&lt;/p>
&lt;p>You can change the default method in
&lt;a href="https://ansel.photos/en/doc/preferences-settings/processing/" title="" rel="dofollow" >preferences &amp;gt; processing &amp;gt; always use LittleCMS 2 to apply output color profile&lt;/a>&lt;/p></description></item><item><title>Rendering intent</title><link>https://ansel.photos/en/doc/color-management/rendering-intent/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>6d2cb7ff7305ad641fbc8080a89aa6f2268d36ef4c0c4085f6e98cbc370fa844</guid><description>&lt;p>If rendering with LittleCMS2 is activated (see
&lt;a href="https://ansel.photos/en/doc/color-management/rendering-method/" title="" rel="dofollow" >rendering method&lt;/a>) you can define how to handle out-of-gamut colors when converting between color spaces. A selection box in the
&lt;a href="https://ansel.photos/en/doc/views/toolboxes/export/" title="" rel="dofollow" >export&lt;/a>,
&lt;a href="https://ansel.photos/en/doc/views/darkroom/modules/output-color-profile/" title="" rel="dofollow" >&lt;em>output color profile&lt;/em>&lt;/a>, and
&lt;a href="https://ansel.photos/en/doc/views/toolboxes/soft-proof/" title="" rel="dofollow" >soft proof&lt;/a> modules gives you a choice of the following rendering intents:&lt;/p>
&lt;dl>
&lt;dt>perceptual&lt;/dt>
&lt;dd>Best suited to photographs as it maintains the relative position of colors. This is usually the best choice.&lt;/dd>
&lt;dt>relative colorimetric&lt;/dt>
&lt;dd>Out-of-gamut colors are converted to colors having the same lightness, but different saturation. Other colors remain unmodified.&lt;/dd>
&lt;dt>saturation&lt;/dt>
&lt;dd>Saturation is retained but lightness is slightly changed.&lt;/dd>
&lt;dt>absolute colorimetric&lt;/dt>
&lt;dd>Keep the white point.&lt;/dd>
&lt;/dl></description></item><item><title>Ansel's color spaces</title><link>https://ansel.photos/en/doc/color-management/color-spaces/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>dab1b88819846862f512412fee0fc31a642dabeb58d957aca7aa01efa07bbada</guid><description>&lt;p>Input images are either RGB files (like JPEGs or TIFFs) or camera RAWs. Both store visual information as a combination of primary colors (e.g. red, green and blue) which together describe a light emission to be recreated by a display.&lt;/p>
&lt;p>The following image illustrates this concept.&lt;/p>
&lt;p>
&lt;figure class="img-wrapper " id="spectral-decompositionjpg">
&lt;button class="open-lightbox-button" onclick="lightbox(&amp;#34;spectral-decompositionjpg&amp;#34;)">
&lt;i class="fa fa-expand-alt open-lightbox-icon fa-fw">&lt;/i>
&lt;/button>
&lt;button class="open-link-button" onclick="window.open('https:\/\/ansel.photos\/spectral-decomposition.jpg', '_blank');">
&lt;i class="fa fa-external-link-alt open-link-icon fa-fw">&lt;/i>
&lt;/button>
&lt;div class="img-container" onclick="lightbox(&amp;#34;spectral-decompositionjpg&amp;#34;)" style="cursor: pointer;" >
&lt;img src=https://ansel.photos/spectral-decomposition.jpg alt="image"
style=" "
decoding="async" loading="lazy"sizes="(max-width: 992px) 100vw, (max-width: 1200px) 66.67vw, 50vw" srcset="https://ansel.photos/spectral-decomposition_hu_8ef6e6e3597df9bb.jpg 140w, https://ansel.photos/spectral-decomposition_hu_1982bc01916d4fc9.jpg 264w, https://ansel.photos/spectral-decomposition_hu_ad4351bc3747fe4d.jpg 331w, https://ansel.photos/spectral-decomposition_hu_952676c986a671a8.jpg 400w, https://ansel.photos/spectral-decomposition_hu_b86250695d637e15.jpg 496w, https://ansel.photos/spectral-decomposition_hu_f714fe1bbb47acd4.jpg 576w, https://ansel.photos/spectral-decomposition_hu_daa42674dc2421ac.jpg 600w, https://ansel.photos/spectral-decomposition_hu_334d6fd696f71f5d.jpg 720w, https://ansel.photos/spectral-decomposition_hu_f8ebb567d2e0b1db.jpg 800w, https://ansel.photos/spectral-decomposition_hu_f9312463d354753.jpg 992w"width="1131" height="600"/>
&lt;/div>
&lt;/figure>
&lt;/p></description></item><item><title>Unbounded colors</title><link>https://ansel.photos/en/doc/color-management/unbounded-colors/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>a2da5dcfedaa7de528862d15efecb497eb8c74ac20770781c375fee26654aca6</guid><description>&lt;p>Screens and most image file formats can only encode RGB intensities confined within a certain range. For example, images encoded on 8 bits can only contain values from 0 to 255, images on 10 bits from 0 to 1023, and so on… Graphic standards postulate that the maximum of that range, no matter its actual value, will always represent the maximum brightness that the display medium is able to render, usually between 100 and 160 Cd/m² (or nits) depending on the actual standard. We generally call this maximum &amp;ldquo;100 % display-referred&amp;rdquo;. The minimum of the range, encoded 0 no matter the bit-depth used, becomes then &amp;ldquo;0 % display-referred&amp;rdquo;. 100 % encodes pure white, 0 % encodes pure black.&lt;/p></description></item><item><title>Possible color artifacts</title><link>https://ansel.photos/en/doc/color-management/color-artifacts/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>5c0ad7fa06f2bddcab6d3b28bad5d1048b4e5fb44ebdbd404906e4e4488a2882</guid><description>&lt;p>There are some infrequent situations that still can lead to problematic results unless the user takes some action. Some modules in Lab color space rely on the fact that the L channels carries all lightness information, with the a and b channels purely representing chroma and hue. Unbounded colors with negative L values are especially problematic to these modules and can lead to black pixel artifacts.&lt;/p>
&lt;p>It has been found that highly saturated blue light sources in the image frame are likely candidates for pixels with negative L values. If you are engaged in stage photography you should pay close attention to such lights appearing in images.&lt;/p></description></item><item><title>Ansel's color dimensions</title><link>https://ansel.photos/en/doc/color-management/color-dimensions/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>66aa13a1ad7dcd374bcccc6349e82c3b3b8881f568d7342b33f1b02acc5cc3b2</guid><description>&lt;p>This section defines the perceptual properties of color, both conceptually and quantitatively, in order to characterize and quantify the creative and corrective adjustments made to color in Ansel.&lt;/p>
&lt;/section>
&lt;section id="definitions">
&lt;h2 class="text-left heading">
Definitions
&lt;span class="header-filet">&lt;/span>
&lt;/h2>
&lt;p>Color properties like &amp;ldquo;saturation&amp;rdquo;, &amp;ldquo;brightness&amp;rdquo; or &amp;ldquo;lightness&amp;rdquo; have passed into common usage but are largely misused and often used to mean different things. In color science, each of these terms has a precise meaning.&lt;/p>
&lt;p>There are two frameworks within which color properties may be analyzed and described:&lt;/p></description></item><item><title>Command Line Interface</title><link>https://ansel.photos/en/doc/cli/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>417aff4466992462d2d2e5609c9502c894aa0b044c31566d3d4b417ab24ca67a</guid><description/></item><item><title>Ansel</title><link>https://ansel.photos/en/doc/cli/ansel/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>cd32f5e4a83c30667aa0628487b751297c8af9fad96f1ca18eaa682fb53bfc8c</guid><description>&lt;p>The &lt;code>Ansel&lt;/code> binary starts Ansel with its GUI and full functionality. This is the standard way to use Ansel.&lt;/p>
&lt;p>&lt;code>Ansel&lt;/code> can called with the following command line parameters:&lt;/p>
&lt;figure class="full-width border-0 p-0 mt-2 mb-3">
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-gdscript3" data-lang="gdscript3">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-1">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-1"> 1&lt;/a>&lt;/span>&lt;span>Ansel [&lt;span style="color:#f92672">-&lt;/span>d {all,act_on,cache,camctl,camsupport,control,demosaic,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-2">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-2"> 2&lt;/a>&lt;/span>&lt;span> dev,fswatch,imageio,input,ioporder,lighttable,lua,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-3">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-3"> 3&lt;/a>&lt;/span>&lt;span> masks,memory,nan,opencl,params,perf,print,pwstorage,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-4">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-4"> 4&lt;/a>&lt;/span>&lt;span> &lt;span style="color:#66d9ef">signal&lt;/span>,sql,tiling,undo,verbose}]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-5">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-5"> 5&lt;/a>&lt;/span>&lt;span> [&lt;span style="color:#f92672">&amp;lt;&lt;/span>input file&lt;span style="color:#f92672">&amp;gt;|&amp;lt;&lt;/span>image folder&lt;span style="color:#f92672">&amp;gt;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-6">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-6"> 6&lt;/a>&lt;/span>&lt;span> [&lt;span style="color:#f92672">--&lt;/span>version]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-7">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-7"> 7&lt;/a>&lt;/span>&lt;span> [&lt;span style="color:#f92672">--&lt;/span>disable&lt;span style="color:#f92672">-&lt;/span>opencl]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-8">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-8"> 8&lt;/a>&lt;/span>&lt;span> [&lt;span style="color:#f92672">--&lt;/span>library &lt;span style="color:#f92672">&amp;lt;&lt;/span>library file&lt;span style="color:#f92672">&amp;gt;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-9">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-9"> 9&lt;/a>&lt;/span>&lt;span> [&lt;span style="color:#f92672">--&lt;/span>datadir &lt;span style="color:#f92672">&amp;lt;&lt;/span>data directory&lt;span style="color:#f92672">&amp;gt;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-10">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-10">10&lt;/a>&lt;/span>&lt;span> [&lt;span style="color:#f92672">--&lt;/span>moduledir &lt;span style="color:#f92672">&amp;lt;&lt;/span>module directory&lt;span style="color:#f92672">&amp;gt;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-11">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-11">11&lt;/a>&lt;/span>&lt;span> [&lt;span style="color:#f92672">--&lt;/span>tmpdir &lt;span style="color:#f92672">&amp;lt;&lt;/span>tmp directory&lt;span style="color:#f92672">&amp;gt;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-12">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-12">12&lt;/a>&lt;/span>&lt;span> [&lt;span style="color:#f92672">--&lt;/span>configdir &lt;span style="color:#f92672">&amp;lt;&lt;/span>user config directory&lt;span style="color:#f92672">&amp;gt;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-13">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-13">13&lt;/a>&lt;/span>&lt;span> [&lt;span style="color:#f92672">--&lt;/span>cachedir &lt;span style="color:#f92672">&amp;lt;&lt;/span>user cache directory&lt;span style="color:#f92672">&amp;gt;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-14">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-14">14&lt;/a>&lt;/span>&lt;span> [&lt;span style="color:#f92672">--&lt;/span>localedir &lt;span style="color:#f92672">&amp;lt;&lt;/span>locale directory&lt;span style="color:#f92672">&amp;gt;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-15">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-15">15&lt;/a>&lt;/span>&lt;span> [&lt;span style="color:#f92672">--&lt;/span>luacmd &lt;span style="color:#f92672">&amp;lt;&lt;/span>lua command&lt;span style="color:#f92672">&amp;gt;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-16">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-16">16&lt;/a>&lt;/span>&lt;span> [&lt;span style="color:#f92672">--&lt;/span>noiseprofiles &lt;span style="color:#f92672">&amp;lt;&lt;/span>noiseprofiles json file&lt;span style="color:#f92672">&amp;gt;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-17">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-17">17&lt;/a>&lt;/span>&lt;span> [&lt;span style="color:#f92672">--&lt;/span>d&lt;span style="color:#f92672">-&lt;/span>&lt;span style="color:#66d9ef">signal&lt;/span> &lt;span style="color:#f92672">&amp;lt;&lt;/span>&lt;span style="color:#66d9ef">signal&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-18">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-18">18&lt;/a>&lt;/span>&lt;span> [&lt;span style="color:#f92672">--&lt;/span>d&lt;span style="color:#f92672">-&lt;/span>&lt;span style="color:#66d9ef">signal&lt;/span>&lt;span style="color:#f92672">-&lt;/span>act &lt;span style="color:#f92672">&amp;lt;&lt;/span>all,raise,connect,disconnect,print&lt;span style="color:#f92672">-&lt;/span>trace&lt;span style="color:#f92672">&amp;gt;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-19">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-19">19&lt;/a>&lt;/span>&lt;span> [&lt;span style="color:#f92672">--&lt;/span>conf &lt;span style="color:#f92672">&amp;lt;&lt;/span>key&lt;span style="color:#f92672">&amp;gt;=&amp;lt;&lt;/span>value&lt;span style="color:#f92672">&amp;gt;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-20">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-20">20&lt;/a>&lt;/span>&lt;span> [&lt;span style="color:#f92672">-&lt;/span>t &lt;span style="color:#f92672">&amp;lt;&lt;/span>num openmp threads&lt;span style="color:#f92672">&amp;gt;&lt;/span>]&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/figure>
&lt;p>All parameters are optional. In most cases Ansel should be started without any additional parameters, in which case Ansel uses suitable defaults.&lt;/p></description></item><item><title>Ansel-cli</title><link>https://ansel.photos/en/doc/cli/ansel-cli/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>5338c46247238599ea384387e3942581fa4243b7be7c8aa88efb407ad7d8e3e2</guid><description>&lt;p>The &lt;code>ansel-cli&lt;/code> binary starts the command line interface variant of Ansel which allows images to be exported.&lt;/p>
&lt;p>This variant does not open any display &amp;ndash; it works in pure console mode without launching a GUI. This mode is particularly useful for servers running background jobs.&lt;/p>
&lt;p>&lt;code>ansel-cli&lt;/code> can be called with the following command line parameters:&lt;/p>
&lt;figure class="full-width border-0 p-0 mt-2 mb-3">
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-1">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-1"> 1&lt;/a>&lt;/span>&lt;span>ansel-cli [&amp;lt;input file or folder&amp;gt;]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-2">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-2"> 2&lt;/a>&lt;/span>&lt;span> [&amp;lt;xmp file&amp;gt;]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-3">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-3"> 3&lt;/a>&lt;/span>&lt;span> &amp;lt;output file or folder&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-4">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-4"> 4&lt;/a>&lt;/span>&lt;span> [--width &amp;lt;max width&amp;gt;]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-5">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-5"> 5&lt;/a>&lt;/span>&lt;span> [--height &amp;lt;max height&amp;gt;]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-6">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-6"> 6&lt;/a>&lt;/span>&lt;span> [--hq &amp;lt;0|1|true|false&amp;gt;]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-7">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-7"> 7&lt;/a>&lt;/span>&lt;span> [--upscale &amp;lt;0|1|true|false&amp;gt;]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-8">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-8"> 8&lt;/a>&lt;/span>&lt;span> [--style &amp;lt;style name&amp;gt;]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-9">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-9"> 9&lt;/a>&lt;/span>&lt;span> [--style-overwrite]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-10">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-10">10&lt;/a>&lt;/span>&lt;span> [--apply-custom-presets &amp;lt;0|1|false|true&amp;gt;]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-11">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-11">11&lt;/a>&lt;/span>&lt;span> [--out-ext &amp;lt;extension&amp;gt;]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-12">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-12">12&lt;/a>&lt;/span>&lt;span> [--import &amp;lt;file or dir&amp;gt;]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-13">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-13">13&lt;/a>&lt;/span>&lt;span> [--icc-type &amp;lt;type&amp;gt;]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-14">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-14">14&lt;/a>&lt;/span>&lt;span> [--icc-file &amp;lt;file&amp;gt;]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-15">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-15">15&lt;/a>&lt;/span>&lt;span> [--icc-intent &amp;lt;intent&amp;gt;]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-16">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-16">16&lt;/a>&lt;/span>&lt;span> [--verbose]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-17">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-17">17&lt;/a>&lt;/span>&lt;span> [--help [option]]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-18">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-18">18&lt;/a>&lt;/span>&lt;span> [--core &amp;lt;Ansel options&amp;gt;]&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/figure>
&lt;p>The user must supply an input filename and an output filename. All other parameters are optional.&lt;/p></description></item><item><title>Ansel-generate-cache</title><link>https://ansel.photos/en/doc/cli/ansel-generate-cache/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>8a06b51a59ad9504e1d05b808edfd28cd540418030ba4b368674a87145765e95</guid><description>&lt;p>The &lt;code>ansel-generate-cache&lt;/code> binary updates Ansel&amp;rsquo;s thumbnail cache. Invoke this program to generate all missing thumbnails in the background when your computer is idle.&lt;/p>
&lt;p>&lt;code>ansel-generate-cache&lt;/code> can be called with the following command line parameters:&lt;/p>
&lt;figure class="full-width border-0 p-0 mt-2 mb-3">
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-1">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-1">1&lt;/a>&lt;/span>&lt;span>ansel-generate-cache
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-2">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-2">2&lt;/a>&lt;/span>&lt;span> [-h, --help]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-3">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-3">3&lt;/a>&lt;/span>&lt;span> [--version]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-4">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-4">4&lt;/a>&lt;/span>&lt;span> [--min-mip &amp;lt;0-8&amp;gt;] [-m, --max-mip &amp;lt;0-8&amp;gt;]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-5">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-5">5&lt;/a>&lt;/span>&lt;span> [--min-imgid &amp;lt;N&amp;gt;] [--max-imgid &amp;lt;N&amp;gt;]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-6">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-6">6&lt;/a>&lt;/span>&lt;span> [--core &amp;lt;Ansel options&amp;gt;]&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/figure>
&lt;p>All parameters are optional. If started without parameters &lt;code>ansel-generate-cache&lt;/code> uses reasonable defaults.&lt;/p></description></item><item><title>Ansel-cltest</title><link>https://ansel.photos/en/doc/cli/ansel-cltest/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>d3c119cd3396ca3c714199ec565f3fc84153d60fdfa33ef63d2aee96d545582b</guid><description>&lt;p>The &lt;code>Ansel-cltest&lt;/code> binary checks if there is a usable OpenCL environment on your system that Ansel can use. It emits some debug output that is equivalent to calling &lt;code>Ansel -d opencl&lt;/code> and then terminates.&lt;/p>
&lt;p>&lt;code>Ansel-cltest&lt;/code> is called without command line parameters.&lt;/p></description></item><item><title>Ansel-cmstest</title><link>https://ansel.photos/en/doc/cli/ansel-cmstest/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>faaf57086021b506844db538100777fc048b5e428db0c371f2bc93e22677528b</guid><description>&lt;p>The &lt;code>Ansel-cmstest&lt;/code> binary (Linux only) investigates whether the color management subsystem of your computer is correctly configured and displays some useful information about the installed monitor profile(s).&lt;/p>
&lt;p>&lt;code>Ansel-cmstest&lt;/code> is called without command line parameters.&lt;/p></description></item><item><title>Purge_non_existing_images.sh</title><link>https://ansel.photos/en/doc/cli/purge_non_existing_images_sh/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>924f970f6c69f146cc7c0fb7193da3b2800dc5e225997178725366cbf7b37f93</guid><description>&lt;p>Find and remove entries from the library database referencing images that no longer exist in the filesystem. You must close Ansel before running this script.&lt;/p>
&lt;p>The script can be called with the following command line parameters:&lt;/p>
&lt;figure class="full-width border-0 p-0 mt-2 mb-3">
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-1">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-1">1&lt;/a>&lt;/span>&lt;span>purge_non_existing_images.sh [-c|--configdir &amp;lt;path&amp;gt;]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-2">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-2">2&lt;/a>&lt;/span>&lt;span> [-l|--library &amp;lt;path&amp;gt;]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-3">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-3">3&lt;/a>&lt;/span>&lt;span> [-p|--purge]&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/figure>
&lt;p>Run the script with no options to perform a &amp;ldquo;dry run&amp;rdquo;, which generates a report of the missing files without committing any changes to the database.&lt;/p></description></item><item><title>Scripting with Lua</title><link>https://ansel.photos/en/doc/lua/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>4f1e8dc5873a7645307d9c892bfd29a6dd925085016d4fb7c623beb5e77e6311</guid><description>&lt;p>Ansel comes with a versatile scripting interface language for functionality enhancement.&lt;/p>
&lt;p>Lua scripts can be used to define actions for Ansel to perform when an event is triggered. One example might be calling an external application during file export in order to apply additional processing steps outside of Ansel.&lt;/p>
&lt;p>&lt;a href="http://www.lua.org/" title="External link" target="_blank" rel="noopener noreferrer nofollow" >Lua&amp;thinsp;&lt;sup class="icon">&lt;i class="fa fa-external-link-alt">&lt;/i>&lt;/sup>&lt;/a> is an independent project founded in 1993, providing a powerful, fast, lightweight, embeddable scripting language. Lua is widely used by many open source applications, in commercial programs, and for games programming.&lt;/p></description></item><item><title>basic principles: luarc files</title><link>https://ansel.photos/en/doc/lua/basic-principles/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>7a33eefd211f0c1895426ed3ace3e04c0bfd26d45f9419b22a62fbdf434fb2ac</guid><description>&lt;p>At startup, Ansel will automatically run the Lua scripts &lt;code>$Ansel/share/Ansel/luarc&lt;/code> and &lt;code>$HOME/.config/Ansel/luarc&lt;/code> (where &lt;code>$Ansel&lt;/code> represents the Ansel installation directory and &lt;code>$HOME&lt;/code> represents your home directory).&lt;/p>
&lt;p>This is the only time Ansel will run Lua scripts by itself. These scripts can register callbacks to perform actions on various Ansel events. This callback mechanism is the primary method of triggering lua actions.&lt;/p></description></item><item><title>A simple Lua example</title><link>https://ansel.photos/en/doc/lua/a-simple-example/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>3a7ace327e03c7e41ead1513575a4abb0dc81812811ecfc56dcf8481f6209dda</guid><description>&lt;p>Let&amp;rsquo;s start with a simple example that will print some code on the console. Create a file called &lt;code>luarc&lt;/code> in Ansel&amp;rsquo;s configuration directory (usually &lt;code>$HOME/.config/Ansel/&lt;/code>) and add the following line to it:&lt;/p>
&lt;figure class="full-width border-0 p-0 mt-2 mb-3">
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-1">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-1">1&lt;/a>&lt;/span>&lt;span>print(&amp;#34;Hello World !&amp;#34;)&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/figure>
&lt;p>Start Ansel and you will see the sentence &amp;ldquo;&lt;code>Hello World !&lt;/code>&amp;rdquo; printed on the console. Nothing fancy but it&amp;rsquo;s a start.&lt;/p>
&lt;p>At this point, there is nothing Ansel-specific in the script. We simply use Lua&amp;rsquo;s standard print function to print a string. That&amp;rsquo;s nice and all, but we can do better than that. To access the Ansel API you first need to &lt;code>require&lt;/code> it and save the returned object in a variable. Once this is done you can access the Ansel API as subfields of the returned object. All of this is documented in Ansel&amp;rsquo;s
&lt;a href="https://ansel.photos/en/doc/lua/api/" title="" rel="dofollow" >Lua API&lt;/a> reference manual.&lt;/p></description></item><item><title>Printing labeled images</title><link>https://ansel.photos/en/doc/lua/printing-labeled-images/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>ac9012b0f96a3267b5847f3d0a28dc3db3994b8e34e5e4d653b3d47c97fac32a</guid><description>&lt;p>The first example showed us the very basics of lua and allowed us to check that everything was working properly. Now let&amp;rsquo;s do something a little bit more complex. Let&amp;rsquo;s try to print a list of images that have a &amp;ldquo;red&amp;rdquo; label attached to them. But first of all, what is an image?&lt;/p>
&lt;figure class="full-width border-0 p-0 mt-2 mb-3">
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-1">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-1">1&lt;/a>&lt;/span>&lt;span>local Ansel = require &amp;#34;Ansel&amp;#34;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-2">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-2">2&lt;/a>&lt;/span>&lt;span>local debug = require &amp;#34;Ansel.debug&amp;#34;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-3">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-3">3&lt;/a>&lt;/span>&lt;span>print(Ansel.debug.dump(Ansel.database[1]))&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/figure>
&lt;p>Running the code above will produce a lot of output. We will look at it in a moment, but first let&amp;rsquo;s look at the code itself.&lt;/p></description></item><item><title>Adding a simple shortcut</title><link>https://ansel.photos/en/doc/lua/simple-shortcut/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>bf5eb875aa0928219a609286609bd8be3efe49313533ccb8766cd3d5e467e3e0</guid><description>&lt;p>So far, all our scripts have done things during startup. This is of limited use and doesn&amp;rsquo;t allow us to react to real user actions. To do more advanced things we need to register a function that will be called on a given event. The most common event to react to is a keyboard shortcut.&lt;/p>
&lt;figure class="full-width border-0 p-0 mt-2 mb-3">
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-1">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-1">1&lt;/a>&lt;/span>&lt;span>Ansel = require &amp;#34;Ansel&amp;#34;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-2">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-2">2&lt;/a>&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-3">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-3">3&lt;/a>&lt;/span>&lt;span>local function hello_shortcut(event, shortcut)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-4">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-4">4&lt;/a>&lt;/span>&lt;span>Ansel.print(&amp;#34;Hello, I just received &amp;#39;&amp;#34;..event..
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-5">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-5">5&lt;/a>&lt;/span>&lt;span> &amp;#34;&amp;#39; with parameter &amp;#39;&amp;#34;..shortcut..&amp;#34;&amp;#39;&amp;#34;)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-6">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-6">6&lt;/a>&lt;/span>&lt;span>end
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-7">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-7">7&lt;/a>&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-8">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-8">8&lt;/a>&lt;/span>&lt;span>Ansel.register_event(&amp;#34;shortcut&amp;#34;,hello_shortcut,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-9">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-9">9&lt;/a>&lt;/span>&lt;span> &amp;#34;A shortcut that prints its parameters&amp;#34;)&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/figure>
&lt;p>Now start Ansel, go to &amp;ldquo;preferences &amp;gt; shortcuts &amp;gt; lua &amp;gt; A shortcut that prints its parameters&amp;rdquo;, assign a shortcut and try it. You should see a nice message printed on the screen.&lt;/p></description></item><item><title>Exporting images with Lua</title><link>https://ansel.photos/en/doc/lua/exporting-images/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>9962480eb3a1fca5629da88237fc7948f074ba824f6a112c3c6b25123dd1f54d</guid><description>&lt;p>So far we have learned to use lua to adapt Ansel to our particular workflow. Let&amp;rsquo;s look now at how to use lua to easily export images to an online service. If you are able to upload an image to a service via the command line then you can use lua to integrate this into Ansel&amp;rsquo;s user interface.&lt;/p>
&lt;p>In this next example we will use lua to export via &lt;code>scp&lt;/code>. A new storage type will appear in Ansel&amp;rsquo;s UI that will export images to a remote target via the copy mechanism in &lt;code>ssh&lt;/code>.&lt;/p></description></item><item><title>Building user interface elements</title><link>https://ansel.photos/en/doc/lua/building-ui-elements/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>3cfc5d93dd081282028b6947078997bdcd1165c46a15e4a48fd03e005f56e9ed</guid><description>&lt;p>Our previous example was a bit limited. In particular the use of a preference for the export path wasn&amp;rsquo;t very nice. We can do better than that by adding elements to the user interface in the export dialog.&lt;/p>
&lt;p>UI elements are created via the &lt;code>Ansel_new_widget&lt;/code> function. This function takes a type of widget as a parameter and returns a new object corresponding to that widget. You can then set various fields in that widget to set its parameters. You will then use that object as a parameter to various functions that will add it to the Ansel UI. The following simple example adds a lib in the lighttable view with a simple label:&lt;/p></description></item><item><title>Sharing scripts</title><link>https://ansel.photos/en/doc/lua/sharing-scripts/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>ff7df88842103c75eee97a222dc128adadd53f379556308ca358e2e1a1158314</guid><description>&lt;p>So far, all of our lua code has been in &lt;em>luarc&lt;/em>. That&amp;rsquo;s a good way to develop your script but not very practical for distribution. We need to make this into a proper lua module. To do that, we save the code in a separate file (&lt;code>scp-storage.lua&lt;/code> in this case):&lt;/p>
&lt;figure class="full-width border-0 p-0 mt-2 mb-3">
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-gdscript3" data-lang="gdscript3">&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-1">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-1"> 1&lt;/a>&lt;/span>&lt;span>&lt;span style="color:#f92672">--&lt;/span>[[
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-2">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-2"> 2&lt;/a>&lt;/span>&lt;span>SCP STORAGE
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-3">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-3"> 3&lt;/a>&lt;/span>&lt;span>a simple storage to &lt;span style="color:#66d9ef">export&lt;/span> images via scp
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-4">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-4"> 4&lt;/a>&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-5">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-5"> 5&lt;/a>&lt;/span>&lt;span>AUTHOR
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-6">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-6"> 6&lt;/a>&lt;/span>&lt;span>Jérémy Rosen (jeremy&lt;span style="color:#f92672">.&lt;/span>rosen&lt;span style="color:#960050;background-color:#1e0010">@&lt;/span>enst&lt;span style="color:#f92672">-&lt;/span>bretagne&lt;span style="color:#f92672">.&lt;/span>fr)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-7">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-7"> 7&lt;/a>&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-8">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-8"> 8&lt;/a>&lt;/span>&lt;span>INSTALLATION
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-9">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-9"> 9&lt;/a>&lt;/span>&lt;span>&lt;span style="color:#f92672">*&lt;/span> Copy this file &lt;span style="color:#f92672">in&lt;/span> &lt;span style="color:#f92672">$&lt;/span>CONFIGDIR&lt;span style="color:#f92672">/&lt;/span>lua&lt;span style="color:#f92672">/&lt;/span> where CONFIGDIR
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-10">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-10">10&lt;/a>&lt;/span>&lt;span>is your Ansel configuration directory
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-11">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-11">11&lt;/a>&lt;/span>&lt;span>&lt;span style="color:#f92672">*&lt;/span> Add the following line &lt;span style="color:#f92672">in&lt;/span> the file &lt;span style="color:#f92672">$&lt;/span>CONFIGDIR&lt;span style="color:#f92672">/&lt;/span>luarc
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-12">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-12">12&lt;/a>&lt;/span>&lt;span> require &lt;span style="color:#e6db74">&amp;#34;scp-storage&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-13">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-13">13&lt;/a>&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-14">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-14">14&lt;/a>&lt;/span>&lt;span>USAGE
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-15">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-15">15&lt;/a>&lt;/span>&lt;span>&lt;span style="color:#f92672">*&lt;/span> Select &lt;span style="color:#e6db74">&amp;#34;Export via SCP&amp;#34;&lt;/span> &lt;span style="color:#f92672">in&lt;/span> the storage selection menu
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-16">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-16">16&lt;/a>&lt;/span>&lt;span>&lt;span style="color:#f92672">*&lt;/span> Set the target directory
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-17">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-17">17&lt;/a>&lt;/span>&lt;span>&lt;span style="color:#f92672">*&lt;/span> Export your images
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-18">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-18">18&lt;/a>&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-19">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-19">19&lt;/a>&lt;/span>&lt;span>LICENSE
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-20">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-20">20&lt;/a>&lt;/span>&lt;span>GPLv2
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-21">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-21">21&lt;/a>&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-22">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-22">22&lt;/a>&lt;/span>&lt;span>]]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-23">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-23">23&lt;/a>&lt;/span>&lt;span>Ansel &lt;span style="color:#f92672">=&lt;/span> require &lt;span style="color:#e6db74">&amp;#34;Ansel&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-24">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-24">24&lt;/a>&lt;/span>&lt;span>Ansel&lt;span style="color:#f92672">.&lt;/span>configuration&lt;span style="color:#f92672">.&lt;/span>check_version(&lt;span style="color:#f92672">...&lt;/span>,{&lt;span style="color:#ae81ff">2&lt;/span>,&lt;span style="color:#ae81ff">0&lt;/span>,&lt;span style="color:#ae81ff">0&lt;/span>})
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-25">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-25">25&lt;/a>&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-26">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-26">26&lt;/a>&lt;/span>&lt;span>local scp_path &lt;span style="color:#f92672">=&lt;/span> Ansel&lt;span style="color:#f92672">.&lt;/span>new_widget(&lt;span style="color:#e6db74">&amp;#34;entry&amp;#34;&lt;/span>){
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-27">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-27">27&lt;/a>&lt;/span>&lt;span> tooltip &lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;Complete path to copy to. Can include user and hostname&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-28">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-28">28&lt;/a>&lt;/span>&lt;span> text &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-29">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-29">29&lt;/a>&lt;/span>&lt;span> reset_callback &lt;span style="color:#f92672">=&lt;/span> function(self) self&lt;span style="color:#f92672">.&lt;/span>text &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;&amp;#34;&lt;/span> end
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-30">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-30">30&lt;/a>&lt;/span>&lt;span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-31">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-31">31&lt;/a>&lt;/span>&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-32">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-32">32&lt;/a>&lt;/span>&lt;span>Ansel&lt;span style="color:#f92672">.&lt;/span>register_storage(&lt;span style="color:#e6db74">&amp;#34;scp_export&amp;#34;&lt;/span>,&lt;span style="color:#e6db74">&amp;#34;Export via scp&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-33">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-33">33&lt;/a>&lt;/span>&lt;span> function( storage, image, format, filename,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-34">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-34">34&lt;/a>&lt;/span>&lt;span> number, total, high_quality, extra_data)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-35">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-35">35&lt;/a>&lt;/span>&lt;span> &lt;span style="color:#66d9ef">if&lt;/span> coroutine&lt;span style="color:#f92672">.&lt;/span>yield(&lt;span style="color:#e6db74">&amp;#34;RUN_COMMAND&amp;#34;&lt;/span>,&lt;span style="color:#e6db74">&amp;#34;scp &amp;#34;&lt;/span>&lt;span style="color:#f92672">..&lt;/span>filename&lt;span style="color:#f92672">..&lt;/span>&lt;span style="color:#e6db74">&amp;#34; &amp;#34;&lt;/span>&lt;span style="color:#f92672">..&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-36">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-36">36&lt;/a>&lt;/span>&lt;span> scp_path&lt;span style="color:#f92672">.&lt;/span>text
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-37">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-37">37&lt;/a>&lt;/span>&lt;span> ) then
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-38">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-38">38&lt;/a>&lt;/span>&lt;span> Ansel&lt;span style="color:#f92672">.&lt;/span>print_error(&lt;span style="color:#e6db74">&amp;#34;scp failed for &amp;#34;&lt;/span>&lt;span style="color:#f92672">..&lt;/span>tostring(image))
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-39">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-39">39&lt;/a>&lt;/span>&lt;span> end
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-40">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-40">40&lt;/a>&lt;/span>&lt;span> end,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-41">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-41">41&lt;/a>&lt;/span>&lt;span> nil, &lt;span style="color:#f92672">--&lt;/span>finalize
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-42">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-42">42&lt;/a>&lt;/span>&lt;span> nil, &lt;span style="color:#f92672">--&lt;/span>supported
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-43">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-43">43&lt;/a>&lt;/span>&lt;span> nil, &lt;span style="color:#f92672">--&lt;/span>initialize
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-44">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-44">44&lt;/a>&lt;/span>&lt;span> Ansel&lt;span style="color:#f92672">.&lt;/span>new_widget(&lt;span style="color:#e6db74">&amp;#34;box&amp;#34;&lt;/span>) {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-45">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-45">45&lt;/a>&lt;/span>&lt;span> orientation &lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;horizontal&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-46">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-46">46&lt;/a>&lt;/span>&lt;span> Ansel&lt;span style="color:#f92672">.&lt;/span>new_widget(&lt;span style="color:#e6db74">&amp;#34;label&amp;#34;&lt;/span>){label &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;target SCP PATH &amp;#34;&lt;/span>},
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-47">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-47">47&lt;/a>&lt;/span>&lt;span> scp_path,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-48">&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-48">48&lt;/a>&lt;/span>&lt;span>})&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/figure>
&lt;p>Ansel will look for scripts (following the normal lua rules) in the standard directories plus &lt;code>$CONFIGDIR/lua/*.lua&lt;/code>. So our script can be called by simply adding &lt;code>require &amp;quot;scp-storage&amp;quot;&lt;/code> in the &lt;em>luarc&lt;/em> file. A couple of extra notes&amp;hellip;&lt;/p></description></item><item><title>Calling Lua from D-Bus</title><link>https://ansel.photos/en/doc/lua/calling-from-dbus/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>bb5fdb8e62cd881cdf7fcb3012c3f09213ab09f621131d15fcf40f2d278d81a3</guid><description>&lt;p>It is possible to send a lua command to Ansel via its DBus interface. The method &lt;code>org.Ansel.service.Remote.Lua&lt;/code> takes a single string parameter which is interpreted as a lua command. The command will be executed in the current lua context and should return either nil or a string. The result will be passed back as the result of the DBus method.&lt;/p>
&lt;p>If the Lua call results in an error, the DBus method call will return an error &lt;code>org.Ansel.Error.LuaError&lt;/code> with the lua error message as the message attached to the DBus error.&lt;/p></description></item><item><title>Using Ansel from a Lua script</title><link>https://ansel.photos/en/doc/lua/darktable-from-lua/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>bc77447606edf9262bb270746476a6bdddea182298aeab97c6c329738fc695a1</guid><description>&lt;p>&lt;em>Warning: This feature is very experimental. It is known that several elements don&amp;rsquo;t yet work in library mode. Careful testing is highly recommended.&lt;/em>&lt;/p>
&lt;p>The lua interface allows you to use Ansel from any lua script. This will load Ansel as a library and provide you with most of the lua API (Ansel is configured headless, so the functions relating to the user interface are not available).&lt;/p>
&lt;p>As an example, the following program will print the list of all images in your library:&lt;/p></description></item><item><title>Lua API</title><link>https://ansel.photos/en/doc/lua/api/</link><pubDate>Sun, 04 Dec 2022 02:19:02 +0100</pubDate><updated>Sun, 04 Dec 2022 02:19:02 +0100</updated><guid>314c5d6cf3fc9b840ad945b71c22c017321c85e788dd8196c5ab4ee77782c8e4</guid><description>&lt;p>Ansel&amp;rsquo;s Lua API is documented in its own manual with a detailed description of all data structures and functions. You can download the API manual from &lt;a href="https://www.darktable.org/resources/" title="External link" target="_blank" rel="noopener noreferrer nofollow" >here&amp;thinsp;&lt;sup class="icon">&lt;i class="fa fa-external-link-alt">&lt;/i>&lt;/sup>&lt;/a>.&lt;/p></description></item></channel></rss>