What actually happens when you resize an image
Going from 6000 pixels wide to 2000 sounds like throwing away two pixels in three. That would be one way to do it, and it would look terrible.
What actually has to happen is closer to reconstruction: work out what the image would have looked like if it had been captured at the lower resolution in the first place.
Why dropping pixels fails
Take every third pixel and discard the rest. Wherever the discarded pixels contained detail, that detail does not vanish gracefully, it reappears as a pattern that was never in the original.
This is aliasing. On product photography it shows up as shimmer on fabric weave, moiré on printed patterns and knitwear, and jagged staircase edges on anything diagonal. Fine repeating detail is exactly the case where it is worst, which is unfortunate given how much product photography is textiles and packaging.
The fix is to average across the pixels you are discarding rather than ignoring them. Every real resampling method is a scheme for doing that averaging well.
The methods, roughly in order of quality
Nearest neighbour. Takes the closest pixel. Fast, and produces exactly the aliasing described above. Useful only for pixel art, where the hard edges are the point.
Bilinear. Averages the four surrounding pixels. Removes most aliasing and softens everything, including edges you wanted crisp.
Bicubic. Uses sixteen surrounding pixels with a curve that can overshoot slightly, which sharpens edges. The general-purpose default in most software for decades, and perfectly good.
Lanczos. Uses a wider window, typically 36 or more pixels, with a windowed sinc function. Retains the most fine detail. Can produce faint ringing next to very hard edges, visible as a light halo. For photographs of products this is usually the best choice, and it is what PrepShot uses for the final step.
Mitchell and Catmull-Rom sit between bicubic and Lanczos, trading sharpness for fewer artefacts.
Why big reductions need two steps
Here is the part that surprises people. Reducing 6000 pixels to 200 in one operation with a good filter is slow, because the filter has to consider a very wide neighbourhood for every output pixel.
The standard approach is to do it in stages: a fast box reduction to get roughly twice the target size, then a good filter for the final step. The fast stage is doing simple averaging over large blocks, which is cheap and, because it is averaging rather than sampling, does not introduce aliasing. The final stage is where the quality decision is made, and it is now operating over a small range.
Done that way, a large reduction is both fast and clean. Done in one pass with a cheap filter, it is fast and mushy.
Upscaling is a different problem
Everything above concerns reduction, where the information exists and the question is how to combine it.
Enlargement has the opposite problem: the information does not exist and something has to invent it. Interpolation produces a smooth guess, which reads as soft. Machine-learning upscalers produce a plausible guess, which reads as sharp but is partly fabricated.
For product photography that fabrication is a genuine issue. An upscaler asked to enlarge a photograph of knitwear will produce something that looks like knitwear at that scale, not like this knitwear. On a listing where the buyer is judging the fabric, that is closer to misrepresentation than enhancement.
Which is why a tool should refuse to upscale by default and tell you what it skipped.
The gamma problem
A subtlety that catches a lot of software, and it is visible once you know.
Pixel values are not proportional to light. They are stored on a curve, so a value of 128 is roughly 22% of the light of 255, not 50%. Averaging two pixels means averaging light, so a correct resize decodes to linear light, averages, and re-encodes.
Most software skips this and averages the stored values directly. The result is that fine bright detail on a dark background gets darker as you shrink, visible as thin light lines fading out, or a busy pattern losing brightness compared with the original.
You will notice it most on hair, wire, mesh and thin highlights. It is not a huge effect, but it compounds across several resizes.
What to actually do
- Reduce from the largest original you have, in as few steps as possible. Repeatedly resizing an already-resized image compounds softness.
- Use a good filter for the final step. Lanczos or Mitchell for photographs.
- Sharpen after resizing, not before. Sharpening before is amplifying detail you are about to discard.
- Never enlarge to meet a minimum.
- Let one tool do the whole chain if you can, so the image is decoded once and encoded once. Passing a file through three programs means three decodes, three encodes, and three generations of JPEG loss.