An image is a grid of numbers
Open any photograph and what you have is a rectangle of coloured squares. A 3000 by 2000 pixel photo holds six million of them. Each one is three numbers in an ordinary 8-bit file — how much red, how much green, how much blue, each from 0 to 255.
That is the whole story, and almost every beginner disaster follows from it. The file records what the camera measured. It does not record the scene. Anything the sensor never sampled is not in there, and no software can go and get it.
Why enlarging goes soft
You have a 400 by 400 logo. You need it at 2000 by 2000. The editor will do it happily and the result will look like it was printed on a wet newspaper.
Here is the mechanism. To make 2000 pixels out of 400, the software has to produce five pixels where it has one. It does that by interpolation — looking at the neighbouring pixels it does have and calculating a weighted average for each gap.
- Nearest neighbour copies the closest pixel. You get hard blocks. Useful only for pixel art and screenshots of pixel art.
- Bilinear averages the four surrounding pixels. Fast, mushy.
- Bicubic and Lanczos use a wider neighbourhood and a smarter weighting curve. Better, still averages.
Every one of these is a guess between two known values. A guess between two known values cannot contain a detail that sat between them in the real world and was never recorded. That is why enlargement looks soft — not because the algorithm is bad, but because there is nothing there.
Shrinking is the opposite and is nearly free. Going from 4000 pixels wide to 1000 throws away information you had a surplus of. Photos almost always survive it well.
The number that is not really in the file
People say "make it 300 dpi" and think they have said something about quality. They have not.
A JPEG has a pixel count and a metadata field saying what physical size it would like to be printed at. Changing that field changes nothing about the pixels. A 3000 by 2000 photo tagged 72 ppi and the same photo tagged 300 ppi are byte-for-byte identical in the part that matters.
What ppi tells you is arithmetic. 3000 pixels at 300 pixels per inch prints ten inches wide. The same 3000 pixels at 150 ppi prints twenty inches wide and looks fine, because a poster is read from two metres away. Billboards are routinely output at 10 to 20 ppi and nobody notices. Viewing distance is the real variable, and 300 ppi is a rule of thumb for something held in the hand.
In Photoshop this lives in Image > Image Size, and the checkbox that matters is *Resample*. Uncheck it and you are only changing the print arithmetic — the pixels stay put. Leave it checked and you are actually inventing or discarding pixels. Photopea, GIMP (Image > Scale Image versus Image > Print Size) and Krita all draw the same distinction, sometimes in two separate dialogues.
Where AI upscaling changes the answer, and where it does not
Model-based upscalers — Real-ESRGAN and the free desktop app Upscayl built on it, Topaz Gigapixel on the paid side, Adobe's Super Resolution inside Camera Raw — do something different from bicubic. They were trained on millions of pairs of small and large images, so instead of averaging they predict what a plausible high-resolution version would look like.
On some material this is remarkable. Skin, foliage, fabric, brickwork, general photographic texture: a good model produces a convincing 2x or 4x that beats any interpolation.
On other material it is dangerous, and the reason is in the word *plausible*. The model is not recovering your detail. It is generating detail consistent with the low-resolution evidence. So:
- Text and logos come back wrong. The letterforms are invented. They look crisp and they are subtly the wrong shapes. A brand mark rebuilt this way will not match the real one.
- Faces get replaced, not restored. Face-enhancement models regenerate the features. The person comes out smoother, younger and slightly not themselves.
- Anything used as evidence is off limits. A number plate, a document scan, a medical or forensic image. What comes out is a guess wearing the clothes of a fact.
If the output will be presented as a record of something real, an upscaler that invents detail has changed the record, and that belongs in the labelling conversation in making things with AI.
What to do today
Ask for the original before you start. Not the WhatsApp copy, not the one pasted into a slide — the file off the camera. Ninety per cent of "can you make this sharper" is solved by getting a file that was never shrunk.
If the client only has the small logo, do not upscale it. Redraw it as vector, which has no resolution at all — that is vector and print.
And check before you accept the job: open the image, note the pixel dimensions, divide by the printed width in inches. If the answer is under about 120, say so on day one rather than on the day of the print run.
Before you move on