Research & gameplan · 14 August 2026

Photo to traceable, at canvas size

A web app that takes a beginner painter's photo, reduces it to the shadow shapes and outlines they can actually paint, and prints it across six sheets of copy paper that tape together at exactly 16 × 20 inches.

The short answer

Yes — all of it runs in the browser, with no server and no per-user compute cost. The image processing is well-established and there are mature WASM libraries for every step. Nothing here needs AI.

The hard part is not the conversion. It's the print chain — getting a home printer to produce sheets that are physically the right size — and the fact that two competitors already own adjacent halves of the job without owning the whole of it.

What you're describing

It has a name, and there's a market for it

What painting instructors call this output is a traceable. What art school calls the underlying analysis is a value study or notan — a photograph reduced to three to five flat tones so the light-and-shadow structure reads without detail getting in the way.

Tracie Kiernan's Step By Step Painting runs a paid membership where a large share of the value is exactly this: every lesson ships with a traceable, students print it and transfer it to canvas with graphite paper. Instructors are producing these by hand, one lesson at a time. That's the demand signal — and it points at a B2B angle that may be worth more than B2C.

The physical workflow the app has to serve, end to end: print → tape sheets → lay graphite transfer paper shiny-side down on the canvas → traceable on top → trace the lines → lift → paint. Every design decision should be checked against that sequence.

The conversion

Six steps, all client-side

This is the pipeline that turns a photograph into a paintable traceable. The order matters — each step depends on the one before it.

01

Normalize

Read the file to a canvas, fix EXIF rotation, and build two copies: a ~1500px working image for live preview, and the full-resolution original held back for the final render. Everything the user fiddles with runs on the small one so the sliders feel instant.

Canvas 2DcreateImageBitmap
02

Smooth before you simplify

This is the step that decides whether the output is good or garbage, and it's the one every naive attempt skips. An edge-preserving blur removes photographic texture — skin pores, foliage noise, JPEG artifacts — while keeping the boundaries between masses crisp. Skip it and the next step produces confetti.

bilateralFilterpyrMeanShiftFilteringOpenCV.js
03

Quantize the values

Convert to CIELAB and quantize the L* channel — not naive RGB grayscale, which reads yellow as light and blue as dark in ways the eye disagrees with. Cut it into 3, 4 or 5 steps. Then run a morphological open/close and drop regions under a minimum area, which is what kills the last of the speckle.

RGB → CIELABk-means on L*multi-Otsumorphology
04

Pull the outlines

Two sources, and the best result blends them. The primary is the boundaries of the value regions themselves — trace those and the outlines describe exactly the shapes the painter is about to fill, which is what they actually want. The secondary is XDoG (extended difference-of-Gaussians), the stylization operator behind most good photo-to-line-drawing output; it's far better suited than Canny, which was built to find edges, not to draw them.

findContoursXDoGflow-based DoG
05

Vectorize

Trace the contours to paths and simplify with Douglas–Peucker. See the note below — this step is the one that separates the product from the free tools.

potrace / imagetracerjsapproxPolyDPSVG
06

Impose and export

Lay the SVG onto a grid of pages at true physical dimensions and write a multi-page PDF, one page per tile, with registration marks and trim guides. PDF units are points at exactly 72 to the inch, so if the user prints at 100% the geometry is correct by construction.

pdf-libSVG → PDF paths

The thing to get right

Go vector, not raster

Every free tiling tool takes a bitmap and blows it up. A phone photo stretched to a 24 × 36 inch canvas gives you lines four pixels wide and soft as chalk — unusable for tracing.

Produce SVG paths at step 05 and the line is a clean 0.5 pt hairline at any output size. Line weight becomes a user control independent of scale, the PDFs stay tiny, and a 30-inch traceable looks identical in quality to an 8-inch one. This single decision is most of the quality gap between this and the free competition.

The hard part

Home printers lie about size

Research turned up a consistent, well-documented set of failure modes, and they will be your number one support burden if you don't design around them from day one:

The mitigations are cheap and they're what a paid product should have that a free one doesn't:

Overlap, don't butt-join. Give every tile a 0.5 inch lap band. Amateur tiling fails at the seams because the tool assumed edge-to-edge alignment the printer can't deliver.
Registration crosses and a "trim this edge" arrow on the two lapping sides of each sheet, so there's no guessing.
Tile codes (A1, A2, B1…) plus a thumbnail map on page one.

Page one is a ruler

The highest-value feature in the whole product costs an afternoon: make the first page of every PDF a calibration sheet with a printed 6-inch rule on it. The user prints it, holds a tape measure to it, and if it doesn't read 6.00 they know scaling is on before they've burned twenty sheets of paper and an hour of taping. Nobody else does this, and it converts the single worst user experience in the category into a 30-second check.

Competitive picture

Two rivals own adjacent halves

Nobody owns the whole chain from photo to taped-together, correctly-sized sheets — but read this row by row before committing, because ArtistAssistApp is closer than is comfortable.

ProductWhat it doesWhat it missesPrice
ArtistAssistApp Tonal value sketches, outline conversion, photo simplification, multi-page printing, grid overlay, 200+ paint brands, Kubelka-Munk mixing. All in-browser. It's a toolbox, not a workflow. No canvas-size-first flow, no calibration, dense and generalist. Aimed at experienced artists. Free / $5 mo
Rapid Resizer Tiled full-size pattern printing, picture stencil maker, resize to any dimension, 800+ stock designs. Crafts-oriented — stained glass, woodworking, quilting. No value studies, no paint palettes, dated interface, stencil output rather than painterly value maps. $39–119 yr
Paint-by-number generators
Davincified, Mimi Panda, ColourSilo
k-means colour quantization to 16–80 regions with numbers. Free, in-browser, no account. Numbered fill regions, not value structure. Single page. No physical sizing. Wrong output for a painter working wet-in-wet. Free
Tiling utilities
PrintTiler, Rasterbator, PosteRazor
Split a bitmap across sheets. Cut marks, overlap bands, paper presets. No image conversion at all, and raster-only — enlargement turns to mush. Free
Step By Step Painting
and instructors like it
Sells lessons with hand-made traceables in a paid membership library. Not a tool — the traceables are made by hand, one at a time. This is a customer, not a competitor. Membership

Where the opening is

Not in any single algorithm — every one of them is commodity, and has been for a decade. The opening is the whole job, sequenced correctly: I have this photo, a 16 × 20 canvas, and an inkjet in the spare room. Give me sheets I can tape up and trace.

That means canvas size is the first question the app asks, not a print-dialog afterthought. Everything downstream — resolution, value count, line weight, tile grid — derives from it. That framing is what ArtistAssistApp, for all its features, does not have.

The colour phase

Paint picking is real, and further along than you'd think

The data exists. Artist Pigments catalogues roughly 80,000 paints across 1,400 brands with CIE Lab and Munsell notation. Golden and Liquitex publish spectrophotometer-measured values for their heavy body lines. For v1 you don't need 1,400 brands — you need the two or three sets your actual users own, which for the online-course crowd means Liquitex Basics above all, then Golden Heavy Body, then craft acrylics for the paint-party end of the market.

Matching is where it gets interesting. Nearest-swatch matching in Lab with ΔE2000 is trivial and mostly wrong, because painters mix. Proper pigment mixing needs a Kubelka-Munk spectral model — Mixbox and spectral.js both do this in JavaScript, and ArtistAssistApp's whole differentiation is built on it. Check Mixbox's commercial licence terms early if you go that way.

The honest version of "show me what it'll look like painted" is not an AI render — it's re-rendering the simplified image using only the palette they picked. Cheap, instant, accurate to what they'll actually get, and it doubles as a mixing guide. Save generative previews for much later; they'd promise a result the user can't reproduce.

Risks

What could sink it

Output quality is subject-dependent Highest

The same settings that produce a beautiful traceable from a portrait produce mud from a landscape. This, not the printing, is what will make or break the product for a first-time user.

Fix Ship subject presets — portrait, pet, landscape, floral, still life — and expose no more than three sliders. Detail, value count, line weight. Twelve controls is a confession that you didn't solve it.

Ink and toner cost Medium

Six sheets of solid black shadow shapes will empty a cartridge and, worse, the black fill obscures the very lines the user is trying to trace through graphite paper.

Fix Never fill values solid. Default to outlines only; offer light hatching or a numbered value label per region as the alternative. This is a correctness issue as much as a cost one.

Users upload photos they don't own Medium

Pinterest is where these people find reference images, and most of it is somebody's copyrighted work.

Fix Client-side processing means you never hold the file, which is most of the exposure gone. Terms of service cover the rest. Say it plainly in the UI — "your photo never leaves your computer" is a feature, not just a disclaimer.

ArtistAssistApp adds a canvas-size workflow Medium

They already have every component. At $5/month they'd also undercut most price points worth having.

Fix Compete on the job, not the feature list, and get to the instructor market — batch traceables, branded output, commercial licence — where a toolbox for individual artists doesn't reach.

Build order

Prove the conversion before anything else

Phase 0 is not a prototype of the app. It's a test of whether the output is good enough to pay for — run it on twenty real photos before writing a line of product code.

Phase 0 · prove it

One page, no product

Upload → smooth → quantize → outline → download a single-page PDF at a fixed size. No accounts, no tiling, no styling.

  • Run it on 20 real reference photos across subjects
  • Judge: would a beginner actually trace this?
  • If the answer is no, nothing downstream matters

Phase 1 · the actual product

Canvas size first

The workflow that doesn't exist anywhere else, built in the right order.

  • Canvas presets → paper size → tile grid
  • Vector pipeline and SVG output
  • Calibration page, registration marks, lap bands
  • Subject presets, three sliders

Phase 2 · monetize

Free tier and a paywall

Free gets one page at 8 × 10 with a watermark. Paid gets multi-page, all sizes, saved projects.

  • Accounts, Stripe, saved projects
  • Instructor tier: batch, branding, commercial licence
  • Price against $5/mo and $39/yr anchors

Phase 3 · colour

Palette and preview

Only once the traceable is genuinely good. This is an upsell, not a foundation.

  • Curated brand sets, Liquitex Basics first
  • Lab matching, then spectral mixing
  • Palette-constrained preview render
  • Affiliate links to Blick / Jerry's — later still

Before we plan further

Four open questions