A single photograph will not give you a dimensionally accurate CAD solid, and it is not a substitute for photogrammetry when you have a ring of overlapping shots. What it can give you is a height field: a grayscale image in which every pixel's brightness stands for a physical height, plus a mesh you can slice, engrave, or cut.
That is the file a lithophane, a LightBurn 3D Sliced job, or a CNC bas-relief actually needs. This tutorial walks through how to get one — a real 16-bit PNG and a closed STL — from one photo, and how to send those files into the tools you already use.
The workflow below uses Depth-Map.com, a free online generator. Product details here are taken from the site itself (home, About, and Pricing) as of 14 November 2026.
What you are making
A depth map is a grayscale image. Bright pixels are closer to the camera; dark pixels are further away. In the workshop that same file is also called a height map or a displacement map — Blender, a laser controller, and a lithophane slicer are reading the same gray values under different names.
The setting that usually changes is invert:
- Bright means high when you carve or print a relief.
- Bright means thin when you print a lithophane and light it from behind.
Depth-Map.com returns two files from one photograph:
- a 16-bit grayscale PNG (65,536 height values, mapped onto a 10 mm full scale)
- a closed, manifold STL: a displaced top surface, a flat floor at
z = 0, and four straight walls
The STL is a sealed solid. Bambu Studio, PrusaSlicer, Cura, and Lychee are all described as slicing it without a repair step. The same PNG drops into LightBurn 3D Sliced, or into Blender's Displacement modifier and ZBrush as an alpha. There is no EXR export in the current version.
This is not a procedural, tileable terrain generator for a game engine. It starts from a photograph and returns the depth it can estimate from that photograph.
Step 1 — Upload a photo
Open Depth-Map.com. The workbench is on the homepage.
A well-lit photo of a single subject works better than a busy wide scene. Medallions, portraits, and coin-style objects are a natural fit; the site's own homepage sample is a lion medallion, and you can download that sample's 16-bit PNG and closed STL without logging in if you just want to inspect the file format first.
Presets on the workbench include General, Laser engraving, Challenge coin, Lithophane, and 3D print & CNC. General is described as balanced depth estimation, with a 16-bit PNG at 3 mm max depth, and as a starting point for almost every workflow.
Step 2 — Generate once
Press Generate. That is the only moment the photograph is uploaded.
A metric Depth Anything V3 model runs on the server, once, in one model size. The reply is a 16-bit grayscale PNG plus the near and far distances of the scene in metres. The site states that the photograph is then discarded on the server; the copy that remains is in your browser tab, and closing the tab clears it. Reloading the page without pressing Generate sends nothing at all.
One Generate costs one credit. A new photograph is what spends the credit. Everything in the next step does not.
Without an account you get 3 Generates a day. A signed-in account with an empty balance receives 3 fresh credits each UTC day.
Step 3 — Tune in the browser
After Generate, every slider rewrites the preview and the mesh locally. The photograph is not uploaded a second time. The site lists these controls (ranges as shown on the homepage workbench):
| Control | Range on the workbench | What it is for |
|---|---|---|
| Max depth | 0.3–10.0 mm | Height of the relief itself |
| Base thickness | 0.3–5.0 mm | Floor under the relief |
| Long side | 10–200 mm (starts at 40 mm) | Overall XY size of the STL |
| Invert | on/off | Swap high and low — use it for backlit lithophanes, or when a coin comes back hollow |
| Gamma | 0.30–3.00 | Contrast of the height field |
| Flatten background | 0.00–0.80 | Pull the background down |
| Crop | 0–35% | Trim the edges |
Overall height of the tallest point is base plus max depth. A 2 mm base with a 5 mm relief therefore peaks at 7 mm.
Because this step stays in the browser, changing your mind about depth, invert, or crop does not spend another credit.
Why the file is 16-bit
This is the part that shows up in the metal and in the print.
The site writes depth on a 10 mm scale: the raw model file can reach 65,535, which maps to that 10 mm span. A 3 mm relief therefore uses less than a third of the gray range.
- In an 8-bit PNG, that 3 mm relief has 77 height steps.
- In this 16-bit PNG, the same relief has 19,661 steps.
Shaded, the 8-bit version shows terraces along every curve. On a shallow fiber-laser engrave, those steps can burn as visible topography lines.
The About page notes that several competing tools write an 8-bit depth map and upscale to 16-bit on export — that does not invent the missing steps. They describe checking the problem with ImageMagick (identify -verbose) and with side-by-side engraves. A longer comparison lives on the site's 16-bit vs 8-bit guide.
Step 4 — Export into the tool you already have
Download the 16-bit PNG, the closed STL, or both. Then pick the workshop path.
Laser engraving (LightBurn 3D Sliced)
Drop the 16-bit PNG onto a LightBurn image layer and set the image mode to 3D Sliced. The height field maps to laser power automatically. The site does not ship a LightBurn project file; it publishes a starting table of power, frequency, and feed for brass, silver, stainless, aluminum, and copper on the LightBurn 3D Sliced page. Treat that table as a first test burn, not a finished recipe for your machine and your stock.
3D printing (lithophane or bas-relief)
Import the closed STL into Bambu Studio, PrusaSlicer, Cura, or Lychee. For a lithophane, the homepage's starting point is inverted depth, 2.8 mm of relief on a 0.6 mm floor. The mesh is a flat closed STL, not a curved shade. For a printed relief, leave invert off unless the preview looks inside-out, and size the long side with the slider (it starts at 40 mm and does not call the model again).
CNC bas-relief (Carveco, ArtCAM, VCarve)
Import the closed STL into your CAM tool. The homepage's portrait example is a 5 mm relief on a 2 mm base, with the long side starting at 40 mm. Because the mesh already has a floor and four walls, you are starting from a solid, not an open displacement surface.
If you would rather displace a mesh in software instead of machining one, import the same 16-bit PNG on a Blender Displacement modifier or as a ZBrush alpha.
Credits and what is — and is not — in this version
The 16-bit PNG and the closed STL are the same files on every tier. From the pricing page as of 14 November 2026:
- Free: $0. 3 new photos a day with no account; 3 credits each UTC day when you are signed in and the balance is empty. Sliders do not spend a credit.
- Pro: $19 a month for 300 credits (about $0.063 per Generate), or $182 a year ($15.17 a month effective, 3,600 credits per year).
- Studio: $49 a month for 2,000 credits (about $0.025 per Generate), or $468 a year ($39 a month effective, 24,000 credits per year).
- Credit packs (one-time, no subscription): 20 credits for $9 (90-day validity), 100 for $29 (180 days), 500 for $99 (365 days).
Not in this version: batch upload, a public API, a separate commercial export format, or EXR. There is one model size.
A short checklist
- Start with a well-lit photo of one subject.
- Upload it at Depth-Map.com and press Generate once.
- Tune max depth, base, long side, invert, gamma, flatten, and crop in the browser until the preview matches the part.
- Download the 16-bit PNG and the closed STL.
- Send the PNG to LightBurn 3D Sliced, or the STL to your slicer or CAM tool, and run a small test before a finished piece.
If you need a full 360° mesh from many photos, use photogrammetry. If you need a mechanical part with exact dimensions, model it in CAD and keep the photo as a reference. If you need the height inside one photograph as a file you can engrave, slice, or mill, a 16-bit depth map is the more direct route — and you can generate the first three from a photo today without creating an account.

