Skip to content
AI editing and layers

AI Photo Editor With Layers: Where Results Land in RetouchPi

For most products the four words "AI photo editing" answer with a new picture: it renders, you download it, you paste it back yourself. This page measures a different answer: the result lands back on the source layer's own rectangle, same origin, same size, so toggling visibility is a pixel-for-pixel before and after. Four real photos each ran once in the real editor, and the two numbers the panel prints (the raster that goes out, the frame that comes back) are recorded below; the cross-check table for the one arithmetic across landing page, editor and server, the ±3 px composite-canvas reading for placement, and the fact that this is the one step that sends your picture out of the browser, with its credit ledger, are all on this page.

Updated 2026-10-10 · ~ 2351 words

The panel prints two numbers

The edit row gives the reader one line of small type and one dropdown, and they say two different things. The small type describes the bytes that go out: the editor flattens the current layer into a raster before sending it, and that raster's long side is capped at 1536 px, so a 2932×2780 original already reads 1536×1456 on that line and is judged ready to edit. The dropdown's first option describes the frame that comes back, computed from the layer's own pixels with the long side capped at 2048, so the same photo reads 2048×1942 in that cell. The two numbers differing is not a fault; they are two facts: what the model receives, and the frame the result returns in.

Source photoThe small type: what goes outThe frame cell: what comes back
1920×10801536×864 · ready to editMatch the photo · 1920×1080
400×400512×512 · will be enlarged first: the model needs 512px per sideMatch the photo · 512×512
2932×27801536×1456 · ready to editMatch the photo · 2048×1942
2932×6001536×512 · will be padded first: the shape is too long for the modelMatch the photo · 2048×512

The four samples are product photos already in the repo, resized or cropped with sips, not synthetic gradients; what the row looks like with no source picture yet is the last capture in the next section.

The first probe asserted a single number and was wrong on three of the four samples - the round that got it wrong is the round that split the two apart: the version asserting the small type waited for 1920×1080 on a 1920×1080 photo and got 1536×864 back. The panel was not lying; the probe was asking the wrong object. This page's table therefore writes both columns, and whichever column a reader checks against, it matches.

The edit composer: a 1920×1080 photo selected, the small type reading 1536×864 ready to edit while the frame cell reads 1920×1080
Measured 2026-10-10. The two numbers side by side: the small type is the raster sent, capped at 1536 on the long side; the dropdown's first cell is the frame returned, the layer's own pixels.
A 2932×2780 photo: the small type reads 1536×1456 ready to edit while the frame cell reads 2048×1942
This end can never say it will scale down: the raster sent is already 1536 on the long side and never reaches the 2048 line; the scale-down state exists only on the two ends that see the original file.

Four states: ready, enlarge, pad, and the one this end cannot say

There are only four verdicts, and the boundary is the model's own two lines: at least 512 px per side, at most 2048 px on the long side. Reading the live /api/ai/models on 2026-10-10, min_side and max_side are exactly 512 and 2048. Inside both lines is ready to edit; a short side under 512 is enlarged in proportion until the short side is 512; a long side over 2048 is scaled in proportion until the long side is 2048; and the family whose aspect ratio exceeds 4:1 has only padding left - after the long side is capped the short side is still under 512, scaling cannot save it, and cropping would mean choosing for the reader which half to lose, so the canvas is padded until both sides reach 512 with the picture centred.

StateTriggerDoes the editor row say it
ready to editboth sides inside 512 to 2048yes
will be enlarged firstshort side under 512yes
will be scaled down firstlong side over 2048, on the original fileno: the raster sent is already 1536
will be padded firstaspect over 4:1, short side still under 512 after cappingyes

The third row is the cell most easily misread on this page: it does not say the editor forgot a hint, it says that hint is mathematically impossible to trigger on this end - 1536 never reaches the 2048 line.

A 400×400 thumbnail: the small type reads 512×512 and says it will be enlarged first, the model needing 512px per side
The short-side-under-512 family: enlarged in proportion to 512, and the frame cell reads 512×512 too - the first state where the two numbers agree.
A 2932×600 strip: the small type reads 1536×512 and says it will be padded first, the frame cell reading 2048×512
Over a 4:1 aspect ratio, padding is the only solution left: cropping would choose for the reader which half to lose, so the canvas is padded until both sides reach 512 with the picture centred.
The row with no source picture yet: put the photo you want changed here, pick a file, drop it on the canvas, or select a layer, with a choose-a-photo button at the right
The empty state is not a warning: a missing picture is the normal starting point and that button is the file picker, so its border uses the ordinary line colour, not a warning colour.

One arithmetic, written in three places

The same verdict has three homes: the landing page's input box, the editor's first tab, and the server's request layer. Each writes it once because each receives a different input (a local file, a canvas layer, HTTP bytes), but the arithmetic must be identical to the letter - change one and not the others, and the best case is wasted quality, the worst case a reader who paid credits for an error they cannot parse. On 2026-10-10 the seven sizes below were run through all three ends, identical line by line:

SizeLanding pageEditorServer
1920×1080ready as isready as isready as is
400×400enlarged to 512×512enlarged to 512×512enlarged to 512×512
2932×2780scaled to 2048×1942scaled to 2048×1942scaled to 2048×1942
2932×600padded to 2048×512padded to 2048×512padded to 2048×512
1536×864ready as isready as isready as is
1536×1456ready as isready as isready as is
1536×314padded to 1536×512padded to 1536×512padded to 1536×512

The boundary cases are pinned by three test suites of their own: one per end. Change one end and leave the others, and it is the other two that go red.

The result lands back on the source layer's rectangle

One thing is often got backwards, so say it first: layers do not share one scale factor. Every layer owns its own rectangle, size plus offset, which is the old rule of layer editors; what must agree is the derived relation - the result of editing layer X has to land back on X's own rectangle, same origin, same size, so that toggling visibility is a pixel-for-pixel before and after rather than two pictures that do not line up.

Placement is one piece of pure arithmetic: when the ratios agree it is the identity, with no resampling at all; when the provider returns a different bucket it is contain plus centring; never a stretch, never a crop. The reading on a composite canvas, taken 2026-10-10: the source rectangle runs 175,132 to 525,394, and the result lands aligned to it within ±3 px; the old behaviour put the same result at 700,525 - and then toggling visibility shows two unrelated pictures instead of a before and after. The source rectangle is fixed at the moment of submission and travels with that batch of results; insertion also uses the result's own mode, not whichever mode the panel happens to sit on.

  • Same ratio: identity placement, no resampling - the source is the model's only reference, and the result should not gain another layer of blur.
  • Different bucket: contain plus centring, none of the four edges cropped.
  • Never a stretch, never a crop: these two carry no exception, because an exception is repainting the picture on the reader's behalf.

The ledger of this step: the picture goes up, and 1 credit is 1 US cent

The boundary first, then the money. Ordinary retouching stays on your machine the whole way: decode, edit and export all happen in the browser. AI generation and AI edits are the one step that goes through a server, and the source picture is uploaded to that server; it is the only time. Then the money: 1 credit = 1 US cent, quoted on the panel before you commit; an anonymous reader sees the row say sign in to use AI, the button reads sign in to generate, and the quote cell stays empty - with no login there is no balance to charge, and this state does not pretend otherwise.

TierModelText to image 1kText to image 2kEdit 1kEdit 2k
Fastz-image-turbo6 credits6 creditsedits not offerededits not offered
Standardqwen-image-3.010 credits20 credits12 credits24 credits
Proqwen-image-3.0-pro20 credits40 credits22 credits44 credits

Read from the live /api/ai/models on 2026-10-10; at most 4 pictures per request (max_count = 4), and the 512-per-side to 2048-long-side limits come from the same response.

How to check it yourself

  • Open the editor, put one of your own pictures on the edit row and read the small type: the size it names is the raster that goes out, never longer than 1536 on the long side.
  • Read the dropdown's first cell: that is the layer's own pixels, long side capped at 2048. The two numbers differing is normal, and so is their agreeing in the states where they must, the enlarged-to-512 one for instance.
  • Take a strip whose aspect ratio exceeds 4:1: the row will say it will be padded first, and the frame cell will sit in the 2048×512 family.
  • Sign in, spend the credits once, then toggle the result layer's visibility off and on: the two pictures must sit on exactly the same rectangle, with no drift and no size change.
  • Open the network panel and edit for three minutes without pressing generate: apart from the page's own assets there is no request carrying your picture out; press generate and there is exactly one.

The last one is the cheapest check of that boundary, and the same one we run on our own build: without a press of generate, nothing leaves the machine.

What this page does not claim

  • No claim that AI editing is free: it is metered in credits, 1 credit = 1 US cent, quoted before you commit; the editor itself is free and carries no subscription.
  • No claim that the AI step stays on your machine: it is the one step that goes through a server and the source picture is uploaded; what stays on your machine the whole way is ordinary retouching.
  • No claim that the result is sharper than the original: the raster sent is capped at 1536 on the long side and the model will not hand back four thousand pixels of detail it never received; the frame returned tops out at 2048, and that is a frame, not a resolution promise.
  • No offline claim: the editor is a web page and there is no editor without a network.
  • No claim that layers share one scale factor: every layer owns its own rectangle; what must agree is the result landing back on the source layer's rectangle, and that is what this page measured.

Questions people ask

Does AI editing upload my photo?

It does. AI generation and AI edits are the one step that goes through a server, and the source picture is uploaded to it; ordinary retouching stays on your machine, and without this step there is no request carrying a picture out. The panel quotes before you commit, and without a login the button reads sign in to generate with the quote cell empty.

Why do the two sizes on the panel differ, and which one is real?

Both are real and they say two things: the small type is the raster that goes out, capped at 1536 on the long side; the dropdown's first cell is the frame that comes back, computed from the layer's own pixels and capped at 2048. That is why a 2932×2780 photo reads 1536×1456 on one and 2048×1942 on the other, and neither is wrong.

Does the result become a new layer, and can its scale change on its own?

The result lands back on the source layer's rectangle: same origin, same size. When the ratios agree there is no resampling at all; when the provider returns a different bucket it is contain plus centring; never a stretch, never a crop. On a composite canvas the measured alignment sits within ±3 px, so toggling visibility is a pixel-for-pixel before and after.

What happens if my picture is too small, too long, or too large?

A short side under 512 is enlarged in proportion to 512; a long side over 2048 is scaled in proportion to 2048; and the family over a 4:1 aspect ratio has only padding left, the canvas padded until both sides reach 512 with the picture centred - cropping would choose for the reader which half to lose, so it does not crop. The panel writes all four verdicts out as they happen.

Put your picture on the row and check

The editor is free and takes a dropped file the moment it opens. Once your picture is on the row, read the small type and the frame cell: two numbers saying two things, both matching, and this page's tables become your own readings.

RetouchPi is developed and maintained by RobotWorld's AI agents. When something goes wrong, tell us right from this page.

As an Amazon Associate, we earn from qualifying purchases.