You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Image adjustments in the Engrave step: gamma, brightness, contrast, sharpen and processed-bitmap preview #515
Is your feature request related to a problem? Please describe.
Portraits almost always need a small gamma, brightness or contrast correction and some sharpening before they are dithered or engraved in grayscale. The Engrave step has Auto Levels, the black/white points and Invert, but nothing else, so every photo makes a round trip through an image editor, and you only see the effect of the processing in the generated ops.
Describe the solution you'd like
New Engrave-step settings, next to the existing levels: Gamma, Brightness, Contrast and Sharpen (unsharp mask with amount and radius in mm, so it scales with the line interval).
Applied after the levels and before the dither or the grayscale-to-power mapping, for the Dither, Variable Power and Multiple Depths modes. Transparent pixels stay untouched; the defaults are a no-op, so existing documents engrave exactly as before.
Covered by the step's cache params and recipes, like the other preprocessing settings.
A preview of the processed bitmap in the step settings (the image the assembler will actually see), plus an option to save it as PNG for checking or for reuse elsewhere.
Describe alternatives you've considered
Editing the photo beforehand in GIMP/darktable works but it detaches the adjustment from the job, and the result can't be judged against the real line interval and dither.
Additional context
I'm working on this. It touches the same preprocessing code as #514, so I'll build it on top of that branch.
Thanks for the proposal. You're right that portraits almost always need a small amount of gamma/brightness/contrast correction plus sharpening, and that doing this in the step (rather than in GIMP beforehand) keeps the adjustment tied to the job and judgeable against the real line interval and dither.
The ordering you propose is correct: after the existing levels and before the dither or grayscale-to-power mapping, with transparent pixels untouched and no-op defaults so every existing document engraves byte-identically. Being covered by the cache parameters is important so results stay reproducible, and the processed-bitmap preview is arguably the most valuable part — seeing exactly what the assembler will receive beats guessing from a photo editor.
Making the sharpen radius in millimetres (so it scales with the line interval) rather than in pixels is the right call for a tool where physical output size is what matters.
Building on the #514 branch makes sense since they touch the same preprocessing code. Please go ahead — happy to review.
Status: #535 now carries this as the tone and sharpen image edits (Tools > Adjust Image), on top of the image edit registry from #552, with the sharpen radius in mm. As agreed in #535, the separate processed-bitmap preview is dropped, since the on-canvas editing already shows the result. Levels as an edit will follow as its own PR.
Activity
knipknap commentedon Oct 9, 2026
Thanks for the proposal. You're right that portraits almost always need a small amount of gamma/brightness/contrast correction plus sharpening, and that doing this in the step (rather than in GIMP beforehand) keeps the adjustment tied to the job and judgeable against the real line interval and dither.
The ordering you propose is correct: after the existing levels and before the dither or grayscale-to-power mapping, with transparent pixels untouched and no-op defaults so every existing document engraves byte-identically. Being covered by the cache parameters is important so results stay reproducible, and the processed-bitmap preview is arguably the most valuable part — seeing exactly what the assembler will receive beats guessing from a photo editor.
Making the sharpen radius in millimetres (so it scales with the line interval) rather than in pixels is the right call for a tool where physical output size is what matters.
Building on the #514 branch makes sense since they touch the same preprocessing code. Please go ahead — happy to review.
feat(image): add tone and sharpen adjustments for raster images
feat(engrave): image adjustments and processed-bitmap preview
docs: document the Engrave image adjustments
feat(image): add tone and sharpen adjustments for raster images
feat(engrave): image adjustments and processed-bitmap preview
docs: document the Engrave image adjustments
feat(image): add tone and sharpen adjustments for raster images
feat(engrave): image adjustments and processed-bitmap preview
docs: document the Engrave image adjustments
test: narrow the optional workflow before adding steps
refactor: add a non-destructive image edit stack to workpieces
feat: add the Image Editing addon with Invert Image
refactor(laser): move Engrave's Invert to the Invert image edit
feat(image-edit): give edits the resolution in pixels per mm
feat(image-edit): add tone and sharpen edits with an Adjust Image dialog
docs: document the Adjust Image edit
perf(image-edit): bound the workpiece and source image caches
switch87 commentedon Oct 13, 2026
Status: #535 now carries this as the
toneandsharpenimage edits (Tools > Adjust Image), on top of the image edit registry from #552, with the sharpen radius in mm. As agreed in #535, the separate processed-bitmap preview is dropped, since the on-canvas editing already shows the result. Levels as an edit will follow as its own PR.refactor(image-edit): restyle the Adjust Image dialog