DarkTable
darktable.orgWindows, Mac OS, LinuxA photography workflow application (similar to Adbobe Lightroom) Includes a non-destructive raw developer for raw images and managing digital negatives.
- Homepage:darktable.org
- GitHub:github.com/darktable-org/darktable
- Web info:web-check.xyz/check/darktable.org
DarkTable Source Code
Author
Description
darktable is an open source photography workflow application and raw developer
Homepage
https://www.darktable.orgRepository
- LicenseGPL-3.0
- Created21 Mar 12
- Primary languageC
- Size1,367,414 KB
- Stars13,324
- Forks1,494
- Watchers13,324
Top Contributors
@TurboGit (9856)
@hanatos (3946)
@houz (2480)
@LebedevRI (2430)
@jenshannoschwalm (2111)
@hean01 (2030)
@victoryforce (2003)
@upegelow (1937)
@AlicVB (1386)
@ralfbrown (1373)
@dterrahe (1076)
@pmjdebruijn (1047)
@aurelienpierre (926)
@pedrocr (863)
@dtorop (711)
@boucman (701)
@jpellegrini (599)
@phweyland (558)
@MRIG (488)
@kmilos (439)
@johnny-bit (430)
@zisoft (424)
@parafin (380)
@andriiryzhkov (370)
@elstoc (367)
@jcsogo (318)
@Nilvus (307)
@rawfiner (305)
@EdgarLux (295)
@MStraeten (292)
@lebmich (268)
@bieber (266)
@wpferguson (246)
@kofa73 (224)
@Arecsu (219)
@edgomez (215)
@cryptomilk (207)
@levitte (196)
@Mark-64 (191)
@rabauke (181)
@schenlap (169)
@masterpiga (162)
@edgardoh (155)
@peterbud (143)
@piratenpanda (106)
@da-phil (106)
@flannelhead (105)
@dumbbell (94)
@oliviertoulouse (89)
@shinoryo1216 (79)
@prokoudine (76)
@bruceg (67)
@matjazjeran (64)
@christte (63)
@HSUfineprint (63)
@timur-davletshin (61)
@bartokk (58)
@tatica (56)
@moy (55)
@mazhe (53)
@josepvm (49)
@mlq (48)
@matt-maguire (48)
@rtmongold (46)
@pryds (46)
@jandren (45)
@bluesceada (44)
@jcrc (42)
@jakubfi (41)
@vertama (41)
@dependabot[bot] (39)
@cytrinox (39)
@GrahamByrnes (34)
@codingdave (34)
@mpaglia0 (34)
@serkan-maker (33)
@hlecleme (32)
@lhietal (29)
@HansBull (29)
@BathoryPeter (29)
@sbraitbart (28)
@bgodole (26)
@guitorri (25)
@franz (25)
@mepi0011 (25)
@richardwonka (24)
@sgotti (24)
@Solarer (23)
@quazardous (23)
@esq4 (22)
@mmardegan (22)
@tony2001 (21)
@leclercj (21)
@sams96 (21)
@paolodepetrillo (21)
@VictorLamoine (19)
@wgoetz (18)
@oexler (18)
@ckennelly (17)
@cthbleachbit (17)
Recent Commits
Pascal Obry(25 Oct 26)
Merge pull request #22785 from piratenpanda/spektra_reference spektrafilm: Move closer towards the reference implementation
piratenpanda(25 Oct 26)
spektrafilm: add the viewing glare in XYZ ahead of the compressor The reference adds the glare veil as the viewing illuminant in XYZ, right after the scanner black/white fit and before the output matrix, the gamut compression and the scanner blur and unsharp mask (scanning._density_to_rgb, add_glare). The module added it as an RGB offset at the very end, after compression and sharpening, so the veil was neither compressed nor sharpened with the image and could push output past the compressor's bounds. Generate the blurred glare field before the scan and add it inside sf_sim_scan and spektrafilm_scan, scaled by the viewing illuminant's XYZ. sf_glare becomes sf_glare_field, and spektrafilm_glare_add goes.
piratenpanda(25 Oct 26)
spektrafilm: apply a positive scan's black/white exposure after halation The reference multiplies the film raw by black_white_filming_exposure_correction() at the end of filming.expose, after the highlight boost, the diffusion filter and halation. The module folded it into the exposure scale instead, so it acted before the highlight boost, whose threshold and curve are absolute in raw units, and a positive scan with black/white correction and boost on rendered its highlights differently. Carry it as a separate raw_scale applied where the raw goes to log exposure, on the CPU path, the OpenCL kernel and the colour picker probes alike.
piratenpanda(25 Oct 26)
spektrafilm: derive the density curves from the curve model throughout The reference treats a profile's density_curves_model as the source of truth: the pipeline samples it onto the log-exposure grid (refresh_density_curves_from_model) and bakes the film chemistry morph into the result before anything reads the curves. The module instead used the stored, measured curves, which differ from the model by up to 0.005 density on the colour stocks, and used the morphed film curves only for development. - sample the model into density_curves when a profile is loaded - read the morphed film curves for the print balance midgray, the enlarger and scan table ranges and the black/white references, so film gamma, push/pull and developer exhaustion move them as they do in the reference - locate the per-pixel density for the grain sub-layers on the normalized total curve, as interp_density_cmy_layers_channel does - size a single-sublayer grain from the curve peak (_coarsest_area_from_curves) instead of the closed form at net density 1, as apply_grain does for every stock
piratenpanda(25 Oct 26)
spektrafilm: run the OkLCh output compressor on D65-relative XYZ OkLab is defined on D65-relative XYZ, and the reference converts the output RGB to XYZ with the output space's own white before OkLab. The module fed it darktable's D50 PCS XYZ instead, where a neutral sits at an OkLab chroma of about 0.046. With the knee starting at zero chroma and C_max collapsing towards white, neutrals were pulled off gray in the highlights: a Rec.2020 work profile white came out at a blue/red ratio of 0.965. Adapt the output white to D65 with Bradford, which undoes the ICC adaptation exactly, before XYZ -> OkLab, and back after. The C_max table, the CPU path, the OpenCL kernel and the lightness probes all read the same matrices, so they move together.
piratenpanda(25 Oct 26)
spektrafilm: match the reference's fallback filters and coupler gammas A film, paper and enlarger illuminant combination missing from the neutral print filter database kept the C0 M65 Y55 parameter defaults. The reference prints such a combination with C0 M50 Y50 (params_builder._DEFAULT_NEUTRAL_PRINT_FILTERS), so use that. The generic DIR coupler gammas, used only for a stock the pack does not characterise, now carry DirCouplersParams' schema defaults instead of an older set.
piratenpanda(25 Oct 26)
spektrafilm: derive grain seed salt from the capture date and time Salting the grain and glare seeds with the image id gave every duplicate of an image its own grain pattern, and the pattern changed whenever an image was re-imported. Derive the salt from the EXIF capture date and time instead, so an image and all its duplicates share one pattern that is stable across re-imports and machines, while images taken at different times still get different grain.
Victor Forsiuk(24 Oct 26)
"Pre-demosaiced" is incorrect if we meant "already demosaiced"
Pascal Obry(25 Oct 26)
Merge pull request #22775 from victoryforce/better-tethering-warning [GUI] Better warning about unreadiness for tethering
Pascal Obry(25 Oct 26)
Merge pull request #22781 from masterpiga/flexi-raster-overlay masks: give an on-canvas presence to raster elements
Pascal Obry(25 Oct 26)
Merge pull request #22760 from zisoft/capture-time-collection-filter fix capture time based collection filter
Pascal Obry(25 Oct 26)
Merge pull request #22780 from masterpiga/fix-22777 masks: make a typed 0 on a relative property slider reach the minimum
Mario Zimmermann(24 Oct 26)
refactor database routines
Daniele Pighin(25 Oct 26)
RELEASE_NOTES.md: note the raster mask tint on the canvas
Daniele Pighin(25 Oct 26)
masks: tint a raster element's area when its panel row is hovered A raster element has no shape, so with the masks shown on the canvas nothing told the user what area it affects. Hovering its row now tints the area its source's mask covers, read from the preview pipe's copy of that mask and kept for the preview it was built for. The AI objects' tint cache, bilinear read, overlay painting and form lookup are shared with it rather than copied.
Daniele Pighin(25 Oct 26)
masks: start the property slider range at the minimum and explain it After a typed value below the minimum, the slider's range still reached down to that value, because setting a soft bound re-applies the slider's current value and widens the range to include it. The value is now set before the soft range, and a toast names the minimum when a typed value was below it. Related: #22777
Daniele Pighin(25 Oct 26)
masks: make a typed 0 on a relative property slider reach the minimum Typing 0 into the size, hardness, fade-out border or compression slider did nothing, because modify_property reads a zero value as "no ratio" and leaves the shape alone. The edit is now floored to the property's minimum before it is applied, so the shape lands on the lowest value it accepts. Fixes #22777
Pascal Obry(24 Oct 26)
Merge pull request #22770 from masterpiga/fix-22470 masks: fixes path nodes jumping around and refreshes preferences accordingly
Daniele Pighin(24 Oct 26)
RELEASE_NOTES.md: note the masking preferences moving to the masks panel
Daniele Pighin(24 Oct 26)
RELEASE_NOTES.md: note the path mask resize fix
Daniele Pighin(24 Oct 26)
masks: move the masking preferences into the masks panel The shrink or grow settings were only in the preferences dialog, far from the slider they change. A gear beside the slider now opens a popover with the step, the unit, the tracing resolution and the curve smoothing, laid out like the group layout presets. The scroll direction and the mask indicator join the panel's options popover, and the masking section of the preferences dialog goes. A shape cached under old resize settings is no longer reused after they change.
Daniele Pighin(24 Oct 26)
masks: keep path resize faithful and its nodes steady Growing or shrinking a path turned its curves into near-straight chords and picked a new set of nodes at every scroll step, so the nodes jumped around. Each original node now follows the offset outline and the handles are fitted to it, with extra nodes only where a curve needs them. The tracing resolution is capped at two raster pixels per image pixel, which makes small paths much faster. The "balanced" smoothing came out the same as "smooth" with this, so it is dropped. Fixes #22470
Daniel Zwell(16 Oct 26)
The profiled denoise tabs should say "luma" and "chroma" The existing titles, Y0 and U0V0, are not descriptive to most people. Luma and chroma are intelligible and accurate, even to mathematicians. The current Y0 and U0V0 names are kept in the tooltips. Note that the channel is already indicated by the color of the curve, but that's insufficient as a cue to new users.
piratenpanda(24 Oct 26)
spektrafilm: salt grain and glare seeds with the image id The grain and glare random fields were seeded from pixel coordinates and constant channel/sub-layer indices only, so two images of the same size with the same spektrafilm settings (e.g. from a style or preset) got an identical grain pattern. Mix grain_hash(imgid) into grain_pixel_seed so every image gets its own pattern, on both the CPU and OpenCL paths.
Victor Forsiuk(23 Oct 26)
Minor code readability maintenance
Victor Forsiuk(23 Oct 26)
Add more information to the failure message
Mario Zimmermann(23 Oct 26)
add release note for capture time collection filter
Mario Zimmermann(23 Oct 26)
fix capture time based collection filter
Pascal Obry(23 Oct 26)
Merge pull request #22748 from masterpiga/flexi-ui-revamp masks: a more accessible panel
Daniele Pighin(23 Oct 26)
masks: name the parts of the tree element, group and member "Element" meant a leaf in some places and any child of a group in others, so a group's tooltips talked about its "elements" while a nested group was not one. An element is now always a leaf, a group holds other parts, and a member is either, as seen from its group. The member-wide names follow: the row header class, the group members box class, the drop and pack functions, the operator tooltips, the "member properties in subpanel" option and the docs, which now define the three terms in masks_data_model.md.
DarkTable Security
DarkTable Website
Website
darktable
darktable is an open source photography workflow application and raw developer
Redirects
Does not redirect
Security Checks
All 65 security checks passed
Server Details
- IP Address65.108.31.59
- Hostnametron.pixls.us
- LocationHelsinki,Uusimaa,Finland,EU
- ISPHetzner Online GmbH
- ASNAS24940
Associated Countries
FR
FI
Safety Score
Website marked as safe
100%
Trackers
No known trackers found
Blacklist Check
www.darktable.org was found on 0 blacklists
- AntiSocial Blacklist
- Artists Against 419
- Badbitcoin
- Bambenek Consulting
- CERT Polska
- CoinBlockerLists
- CRDF
- CryptoScamDB
- EtherAddressLookup
- EtherScamDB
- Fake Website Buster
- MetaMask EthPhishing
- NABP Not Recommended Sites
- OpenPhish
- PetScams
- PhishFeed
- PhishFort
- Phishing.Database
- PhishStats
- PhishTank
- Phishunt
- RPiList Not Serious
- Scam.Directory
- SecureReload Phishing List
- Spam404
- StopGunScams
- Suspicious Hosting IP
- ThreatFox
- ThreatLog
- TweetFeed
- URLhaus
- ViriBack C2 Tracker
Website Preview
DarkTable Docker
Container Info
Darktable
[darktable](https://www.darktable.org/) is an open source photography workflow application and raw developer. A virtual lighttable and darkroom for photographers. It manages your digital negatives in a database, lets you view them through a zoomable lighttable and enables you to develop raw images and enhance them.
View on DockerHub
linuxserver/darktable:latestRun Command
docker run -d \
-p 3000:3000/tcp \
-p 3001:3001/tcp \
-e PUID=${PUID} \
-e PGID=${PGID} \
-e TZ=${TZ} \
-v /srv/lsio/darktable/config:/config \
--restart=unless-stopped \
linuxserver/darktable:latestCompose File
version: 3.8
services:
darktable:
image: "linuxserver/darktable:latest"
ports:
- "3000:3000/tcp"
- "3001:3001/tcp"
environment:
PUID: 1000
PGID: 1000
TZ: Etc/UTC
volumes:
- "/srv/lsio/darktable/config:/config"
restart: unless-stoppedEnvironment Variables
- Var NameDefault
- PUID1000
- PGID1000
- TZEtc/UTC
Port List
- 3000:3000/tcp
- 3001:3001/tcp
Volume Mounting
- Container PathHost Bind
- /config/srv/lsio/darktable/config
DarkTable Reviews
More Image Editors
A free, open source, cross-platform image editor. GIMP is a powerful tool for photo retouching, image composition, and image authoring. It is highly customizable, and supports a wide range of file formats.
A free, open source, professional vector graphics editor. It is a powerful tool for creating illustrations, icons, logos, diagrams, maps, and web graphics.
Digital painting application. Free and open source (backed by KDE), with cross-platform support, Krita is popular among both professional and amateur artists due to it's comprehensive feature set, and intuitive UI
A more advanced take on Microsoft Paint. Suitable for basic image editing, with support for basic layers, unlimited undo/redo, and extendable via plugins
A free online image editor, for both raster and vector graphics, with a very wide range of supported formats
Not Open SourceA free web-based image editor, with a modern UI. Also offers premium/paid features, such as AI-powered generation, touchup and editing
Not Open SourceA powerful raw photo processing system and editor, for non-destructive editing of raw digital photos
About the Data: DarkTable
Change History
- Added
Edit DarkTable Data
You can edit DarkTable's entry in this section of awesome-privacy.yml by submitting a PR to our GitHub repo.
Note that some of the information shown above has been aggregated from external
sources, a list of these can be found data documentation.
Origin Data
Modify Data
API
You can access DarkTable's data programmatically via our API. Simply make a GET request to:
https://api.awesome-privacy.xyz/v1/services/darktableThe REST API is free, no-auth and CORS-enabled. To learn more, view the API Docs or read the API Usage Guide.
Share DarkTable
Help your friends compare Image Editors, and pick privacy-respecting software and services.
Share DarkTable and Awesome Privacy with your network!
