Image to Lithophane STL: Flat, Curved and Lamp Shade

This tool turns a photo into a lithophane STL: dark parts of the picture become thicker plastic, light parts thinner, so the image appears when light shines through the print. Your photo stays in your browser and is never uploaded.

1. Photo

Drop a photo here or click to choose
JPG, PNG, WebP or GIF
No photo yet
Drag a box on the photo to crop it. Tap Full image to undo the crop.

2. Adjust the image

3. Shape and size

4. Frame and stand

0 = no frame

Preview

Choose a photo or press Try an example.
Drag to turn, wheel or pinch to zoom, double-click to reset
Building the STL...

The preview uses a coarser grid when the model is large; the STL download uses your full points-per-mm setting.

Typical print settings for lithophanes
  • Print standing up (the STL is already upright) so the detail is made by the layer height, not the nozzle width.
  • White or natural PLA, 100% infill (or enough walls to fill the part), 0.10 to 0.12 mm layers.
  • Slow outer walls (about 20 to 30 mm/s), a brim of 5 to 10 mm on tall flat panels, no supports.
  • Seam placed at the back or on the frame; cooling fan on.
These are typical starting values; your printer and filament may need different ones.

How the Lithophane Generator Works

A lithophane is a thin plastic sheet whose thickness follows the picture. Where the photo is dark the wall is thick and blocks light; where it is light the wall is thin and glows. Held up to a lamp, the print shows the photo in shades of light.

The tool reads your photo in the browser, turns it into a grid of thickness values and builds a closed 3D model from them: a front relief, a smooth back, side walls, an optional frame and an optional stand. Nothing is uploaded.

The Method

1. Greyscale
grey = 0.299 R + 0.587 G + 0.114 B
Each pixel becomes a brightness from 0 (black) to 1 (white). Brightness, contrast, gamma (grey1/γ) and invert are applied next, then the image is averaged down to the model grid.
2. Brightness to thickness
t = tmin + (1 − grey) × (tmax − tmin)
Positive mode, the normal one: black gets the maximum thickness, white the minimum. Negative mode swaps them. The mapping is straight-line; use gamma to lift or darken the mid-tones.
3. Grid and size
points across = width × points per mm + 1
curved radius = total width ÷ arc angle (rad)
cylinder radius = circumference ÷ 2π
The other side follows the crop's aspect ratio. For curved and cylinder shapes the width is measured round the smooth inside surface; the relief faces outwards.
4. Closed mesh and STL size
triangles ≈ 4 × (cols − 1) × (rows − 1) + walls
STL bytes = 84 + 50 × triangles
Every grid cell gives two triangles on the front and two on the back; the edges are closed with walls. Each edge is shared by exactly two triangles and all of them face outwards, so slicers read it as one solid. Grids over about 260,000 points are capped.

Worked Example

A 4:3 photo (400 × 300 pixels) as a flat panel, 100 mm image width, 0.8 to 3.0 mm thick, 3 points per mm, 3 mm frame 3.5 mm thick:

  • Image height = 100 × 3 ÷ 4 = 75 mm. Grid = 301 × 226 points, 0.333 mm apart.
  • The frame is 9 cells (3.0 mm) on every side, so the part is 106 × 81 mm and 3.5 mm deep at the frame.
  • A mid-grey pixel (0.5): t = 0.8 + 0.5 × 2.2 = 1.90 mm. A dark pixel (0.2): t = 0.8 + 0.8 × 2.2 = 2.56 mm.
  • Grid with frame = 319 × 244 points, giving 4 × 318 × 243 + 4 × 318 + 4 × 243 = 311,340 triangles, so the binary STL is 84 + 50 × 311,340 = 15.6 MB.

Tips for Better Lithophanes

  • Pick a photo with clear contrast. Faces lit from the side, with no large burnt-out white areas, work best. Raise the contrast a little if the backlit preview looks flat.
  • Keep the range near 0.8 to 3.0 mm. These are common starting values for white PLA. Thinner than about 0.6 mm can leave holes; thicker than 3 to 4 mm gets too dark to show detail.
  • 3 to 5 points per mm is plenty. A 0.4 mm nozzle cannot show detail much finer than its line width across the panel; extra points mainly make the file bigger.
  • Use the frame. A frame thicker than the image stiffens the panel and gives a clean edge for the stand to grip.
  • Lamp shades: a cylinder sized by diameter fits over a tea light or LED puck. Leave at least 10 mm between the light and the wall, and never use a hot incandescent bulb inside PLA.
  • Need flat outlines instead? For laser or CNC work use the Image to DXF Converter. For a name plate or sign print, try Text & Sign to STL. Plates with hole patterns come from the DXF Part Maker.

Frequently Asked Questions

A common starting range for white PLA is 0.8 mm for the lightest areas and 3.0 mm for the darkest. Go thinner than about 0.6 mm and bright areas may print with gaps; go thicker than 3 to 4 mm and dark areas stop letting light through.

Standing up is the usual choice. The picture detail is then made by the layer height, which can be 0.1 mm, instead of the nozzle line width of about 0.4 mm. The STL from this tool is already upright; add a brim or the stand for tall panels.

Use 100% infill, or enough walls to make the part solid, so infill patterns do not show as shadows. White or natural PLA is the usual filament. Layer heights of 0.10 to 0.12 mm and slow outer walls are typical starting values.

Every grid point adds about four triangles and each triangle takes 50 bytes in a binary STL. A 100 mm panel at 3 points per mm is around 15 MB. Lower the points per mm to shrink it; 3 to 5 points per mm is enough for a 0.4 mm nozzle.

No. The photo is read and turned into an STL by your browser on your own device. Nothing is sent to a server.

Thickness ranges and print settings are typical starting values, not guarantees. The backlit preview is a simple simulation; real results depend on the filament, light source and printer.