PictureBorderA PictureEditor.com tool

Drawn frames, and photographed ones

This is the page where the tool says what it cannot do. Every frame shipped today is generated geometry; the ones that will not be are named here before they arrive.

What a frame is, in this library

Every frame on the shelf is a short record rather than an image. The record names a cut-edge generator, a way of filling the band, a width expressed as a fraction of the photograph's short edge, one to three colour slots and the controls it wants on screen. The renderer reads that and draws the frame at whatever size it is asked for. Nothing is stored as pixels, so nothing has a native resolution to be enlarged past.

Three things follow from that, and all three are the reason it was built this way. The frame is the same shape on a 900-pixel preview and an 8000-pixel export, because every length in the record is a proportion. The colours are editable, because they are values rather than pixels somebody already painted. And the library can grow without anybody drawing anything, because a new frame is a new record.

Shipped today
22 frames across four groups, every one of them generated geometry.
Stored as
A record of numbers and colour slots, a few hundred bytes each.
Drawn as
SVG paths, gradients, patterns and strokes — nothing else is allowed in.
Scales to
Whatever the photograph is. There is no ceiling that comes from the frame.

The rules the renderer has to obey

A frame is previewed as live SVG over the picture and exported by drawing that same SVG onto a canvas. The second half of that sentence puts two hard limits on what a frame may contain, and a script checks every record against them before release.

No foreignObject. No CSS filters. Both of those either taint the canvas or fail silently in at least one shipping browser, and a frame that fails there fails at the exact moment somebody tries to save — which is the worst possible moment to find out. Blurs are built from stacked strokes instead of a Gaussian filter for the same reason: four concentric passes look the same everywhere, and a blur filter does not.

Why the preview can be trusted

There is one drawing path, not two. The stage runs it against a smaller copy of the photograph and the export runs it against the real one. Because every length in a record is a fraction rather than a pixel count, the two come out as the same shape at two sizes rather than as two shapes that resemble each other.

What the craft sets will give up

The frames that are planned and not yet here are the occasion and craft sets: washi tape, pressed leaves, kraft paper, film scrap. Those cannot be generated, because what makes them work is that they are photographs of real materials. They will arrive as raster tiles at around 2048 pixels, and that is a different kind of object from everything described above.

In practice a raster tile holds up to roughly six thousand pixels on the long edge of the finished file. Past that it softens — not catastrophically, but visibly, in the way an enlarged photograph softens. When those frames ship they will carry a small tag on the shelf saying so, and the export will say so again if the photograph is large enough for it to matter. Pretending a photographed frame and a generated one are the same thing would be easier and would be untrue.

The two things this tool will not do

  • It cannot manage colour for print. The frame colours are written as sRGB with no profile attached, so what a lab returns is between you, the lab and the paper. The site has no printing advice because it has no way to make a promise it could keep.
  • It cannot make a photograph better. A frame is presentation. On a busy picture a wide ornate band actively costs legibility, and there is a whole guide arguing that most pictures want less frame than they are given.

There is one more thing worth stating plainly, because it changes what the tool is rather than what it can do: nothing you open here is sent anywhere. The photograph is decoded by the browser, the frame is drawn over it in the same tab, and the file you save is written by the same tab to your own disk. There is no server behind this page to receive an image even if something went wrong.

Go and draw one