· Updated

From photo to STL: a practical 3D printing workflow

A photo-to-STL workflow turns one JPG or PNG into a triangle mesh you open in a slicer. PrintMesh builds that mesh. Cura, PrusaSlicer, or Bambu Studio still set the size, the supports, and the print. Do the job in this order: one clear photo, the right kind of file, a preview, one download choice, then the slicer checks. The upload path is Convert an image to STL.

Start with one clear photo

Pick a JPG or PNG with one subject and a simple background. Product shots, character drawings, and toys work better than group photos or busy scenes. Face the subject toward the camera. A three-quarter view shows more of the real shape than a flat head-on shot. Leave empty backdrop around the object so the silhouette is obvious. You do not need Blender or another CAD program to start.

Four photo rules: one subject, a plain background, a three-quarter view, and even light.

One object, empty margin, a bit of the side visible, and light that does not throw a hard shadow. The mesh cannot recover a picture that misses these.

Failures here come from the picture, not from the credit tier. Standard, High, and Ultra spend 1, 3, and 5 credits. A higher tier is a finer mesh from the same image. It does not invent a view the camera never took. If the shape is wrong at Standard, Ultra draws that wrong shape with more triangles.

The subject merges with the background. A toy on a patterned blanket, or a hand still in the frame, becomes one lump. Leave empty space around one object and use a plain backdrop: paper, a bare table, or a flat wall. If the preview includes the blanket, change the photo. Scaling that mesh still prints the blanket.

Several subjects become one. A group photo or two miniatures in one frame has no single silhouette. The generator glues the neighbors together. Crop to one object, or shoot again.

The hidden side is invented. A straight-on face says nothing about the back of the head. The mesh still has a back, and that back is a guess. Ears, a hood, a tail, or the far side of a bottle can become a bulge that was never in the photo. Shoot a three-quarter view when the back matters. Do not pay for Ultra and expect a second camera angle. A part with a known depth needs a drawing, not this guess.

Thin parts disappear in the slicer. Hair, a sword, a wire, an antenna, or an earring can be narrower than your nozzle and layer height. The browser can still show those strands. The slice preview will not. Thicken them from the OBJ, or leave them out of the print. More triangles along the same strand do not make it wider.

A logo on a curved surface stays a photo of that surface. A graphic on a shirt becomes a wrinkled shirt, not a flat logo. A label on a bottle becomes the bottle. If the logo itself is the object you want, stop here and read the next section. This generator builds the thing the graphic sits on.

Even light helps. A hard shadow or a flash spot becomes a groove or a bump, because the model is inferred from the picture, not from a scan.

Three ways a picture becomes an STL

The query "image to STL" covers three different jobs. Only one of them is a 3D model of the subject.

Method What the file is Print it when you want
Lithophane / heightmap A plate whose thickness follows the brightness of the photo A backlit relief of a face or a scene
Logo extrusion A flat silhouette with one thickness A keychain, stamp, or cookie cutter
Full 3D mesh A solid you can turn and see from the side A figurine, prop, or product shot

Three columns compare a lithophane plate, a flat logo extrusion, and a full 3D mesh. Only the full 3D mesh is marked as the PrintMesh job.

A lithophane is still a picture. Light passes through the thinner parts of a plate, so a portrait reads when you hold it up to a lamp. The shape is a slab, not a figure you can walk around. A lithophane is a useful print. It is not a mesh of the sitter. An extrusion is a cookie-cutter: the outline of a logo or a letter, one thickness, and no guessed back.

PrintMesh does neither of those jobs. It guesses a solid from one view, including sides the camera never saw. A plaque, a lamp lithophane, or a flat logo needs a relief tool or an extrusion tool. A clear photo of the wrong job still makes the wrong file: a logo becomes a thick token, and a window portrait becomes a bust.

Generate the mesh and preview it

Upload the image and generate. The in-browser preview is a GLB. Rotate it before you download anything else. Look for a missing limb, a base too thin to stand, or a subject blended into the background. Orbit to the back. That side was not in the photo, and it is the side most likely to be wrong.

A finer tier does not promise a clean slice, and PrintMesh does not promise a first-try print. Generate again only after the photo changes. That spends more credits and still cannot see around the subject.

The preview has no millimeter ruler and no build plate. A model that looks large on a laptop can import as a speck, or as something bigger than the printer. The GLB is a shape check. Size is checked later, on the STL, in the slicer.

A photo becomes one GLB preview, then an STL for the slicer. OBJ and STL are converted from that same GLB.

If the preview is a flat sheet, two objects melted together, or a hole you can see while you orbit, stop and change the photo. The slicer will not invent the missing volume.

Download GLB, STL, or OBJ from one generation

You do not generate three models. One PrintMesh generation can export more than one format. GLB is the source mesh. OBJ and STL are converted from that GLB when you ask for them. Converting does not spend another generation. See Export GLB, OBJ, and STL.

GLB goes to the browser preview, STL goes to Cura, PrusaSlicer, or Bambu Studio, and OBJ goes to an editor. All three come from one generation.

Use GLB to preview

GLB is the binary form of glTF, which is why the browser can orbit the mesh without a conversion step. The glTF 2.0 specification describes that container. Most slicers want STL, so GLB is the check before you convert, not the file on the build plate. Download a GLB copy if you want the preview saved. Keep the generation if you might want another format later. Deleting it means spending credits to preview again.

Use STL to slice and print

Open the STL in Cura, PrusaSlicer, or Bambu Studio. PrintMesh converts it from the GLB. It is not a second generation and not a different shape. An STL is a list of triangles. It does not store millimeters, color, or the photo. The STL format leaves units to the program that opens the file, so the same download can look tiny on one plate and huge on another. A clean GLB does not mean a clean slice.

Use OBJ when you need to edit

OBJ is for an editor such as Blender. Use it to thicken a thin wrist, delete a floating speck, or cut away backdrop that fused to the subject. If you are not editing, skip OBJ and download STL. An edit does not write back into the PrintMesh preview. Export a new STL from the editor when you are done, and slice that file.

Download the format the next tool asks for. Free downloads include a watermark. Paid plans do not. The watermark is on the saved file, in every format from that generation.

PrintMesh does not slice the model, add supports, or send a job to your printer. It also does not repair the mesh.

Check scale, thin walls, floating parts, and overhangs

A mesh that looks finished in the browser can still fail in the slicer. Check the GLB, then check the STL before you spend filament. See Print-ready meshes from a single image.

Four slicer checks: set the size in millimeters, look for thin walls, find floating parts, and add supports for overhangs.

The GLB has no ruler, so do this in the slicer.

  1. Set the height in millimeters. UltiMaker Cura lets you type a size on the plate. PrusaSlicer and Bambu Studio do the same. Use the slicer that matches your printer. Judge walls only after that size is real: a sword that is hair-thin at 30 millimeters may print at 180, and a figurine that is fine at 80 may be a trinket at 20. The STL will not remember the number.
  2. Put the face that should sit on the bed downward. A model that arrives on its side prints that way until you rotate it. A base that hovers, or a rounded back that is the only contact, needs another orientation or a brim you add yourself. The download has no brim.
  3. Look for thin walls and floating parts. Islands that do not touch the mesh show up in the slice preview even when the solid view looks continuous. PrintMesh does not thicken walls for you. A floating part will not stand unless you support it or move it in an editor until it touches something. A hand melted into a hip is a photo problem. Separating it is an edit, not a scale change.
  4. Add supports for overhangs you can see. Nothing in the download has supports. A chin, a cape, a brim, or an outstretched arm may need them. If the overhang is only a guess on the hidden side, decide whether to print that guess.
  5. Read the slice preview for holes and open edges. After the STL is the right size, run the slicer's warning pass. PrusaSlicer highlights non-manifold edges and can add supports where the mesh hangs in open air. Cura and Bambu Studio show the same class of problem. Fix the warnings there.

PrintMesh generates a mesh from one image and lets you preview GLB. It does not guarantee a watertight or manifold mesh and has no mesh-repair step. Always inspect the STL before you print. If the slicer offers a repair, run it and look again. Do not expect PrintMesh to close a hole, thicken a hair-thin wrist, or separate two subjects the photo merged.

If you can already see the hole while you orbit the GLB, generate again from a clearer photo instead of stacking repair tools. A repair that hides a bad silhouette still prints that silhouette. If the subject is fused to the background, change the photo rather than scaling the mesh. When the slice is a solid shell at the size you typed, export G-code. PrintMesh's part of the job ended at the mesh.

View pricing