FixPhotoQuality

Resolution · June 4, 2026

How I had to improve photo resolution on a yearbook portrait scanned at 72 ppi

A yearbook plant rejected a 72 ppi school portrait, so I had to improve photo resolution without inventing a new face.

Before and after of a backyard print on scanner glass. Left is the pixel damage. Right is the same photograph kept sharp.
Before and after of a backyard print on scanner glass. Left is the pixel damage. Right is the same photograph kept sharp.

A yearbook portrait scanned at 72 ppi is a small file wearing a confident tag. Improve the photo resolution from the pixels, not from the tag.

The parent called and asked me to improve photo resolution on a school portrait the yearbook printer had bounced. The file on the kitchen laptop was jordan-4x6-72.tif. It is 288 by 432 pixels. That is what you get when you lay a 4 by 6 inch glossy print on a scanner and leave the resolution menu at 72, which is where this particular all-in-one sits after anyone chooses a preset named Email. Jordan is in the eighth-grade book. The slot is a head-and-shoulders, and the plant will not take a face that falls apart into postage stamps. I restore family pictures, and a yearbook page is a family picture with a deadline and a preflight robot.

TL;DR. jordan-4x6-72.tif was a 4 by 6 packet print scanned at 72 samples per inch, 288 by 432. The face crop, jordan-face-72.png, was 150 by 190. The yearbook slot is 1.625 inches wide and the plant wants 300 pixels per inch, about 488 pixels across. Changing the ppi tag to 300 added no pixels, so the bounce stayed. A 4x model pass equalized Jordan's eyes, doubled a mole, and invented a hairline. I rejected it. The print was still in a drawer. A 600 ppi rescan, jordan-4x6-600.tif at 2400 by 3600, produced jordan-face-final.jpg at 1020 by 1320, and the plant's proof marked the slot okay.

The scan was a menu, not a photograph

The portrait itself is a fall sitting from the school packet. Blue mottled seamless, a navy sweater, a small mole on the cheek that sits on the camera-left side of the face. The household had the glossy 4 by 6 and not the studio file. The studio that shot the district closed two winters ago. I asked. The parent had already emailed a dead domain. The print is the record.

They put the print on the glass and hit scan. The driver, an Epson all-in-one that also lives in my notes as the machine that ate a different client's wedding album, defaults to 72 when the last person wanted a small JPEG for a form. Seventy-two samples per inch of a 4 by 6 inch print is 288 by 432. The TIFF they sent me matches that arithmetic exactly, so I am not guessing the menu. The file has no embedded scan DPI that I trust more than the pixel dimensions, but the dimensions are the confession.

At 100 percent on my screen the face is the size of a postage stamp, and the iris is one brown. Not a structure. A fill. The catchlight in the camera-right eye is a short bright run, three pixels, vaguely rectangular, which is the softbox in the gym they used as a studio. The other eye is narrower because Jordan is mid-smile, and at this sampling the narrow eye is a darker slit with no separate catchlight at all. The mole is one pixel at value 92 sitting in cheek values around 104. I wrote those numbers down before I touched anything. If a later file has two moles, I will know I manufactured the second one.

The sweater is four blues. The background is three. You can improve photo resolution as a phrase all day, and you will still be starting from that poverty. I told the parent the count on the phone. There was a pause, the sound of a drawer, and then the useful sentence. The print is still here. Good. We would rescan. First I had to see the rejection, because sometimes the plant is complaining about a color profile and the family hears the word resolution.

What the plant actually measured

The bounce was an automated mail from the yearbook upload, forwarded as a PDF they had printed and rescanned, which I am choosing not to enjoy. I asked for the original message. It named the file they had uploaded, jordan-face.jpg, and it said the effective resolution was 92 pixels per inch against a minimum of 300. The placed slot is 1.625 inches wide by 2.125 inches tall.

Here is the division, because this is the part that gets hand-waved. They had cropped the face out of the 288 by 432 scan. The crop, which they also sent me later as jordan-face-72.png, is 150 by 190 pixels. Put 150 pixels across a slot that is 1.625 inches wide. 150 divided by 1.625 is about 92. The robot was not estimating sharpness. It was dividing. It does not know what a mole is. It knows the slot and the pixel grid.

The height works out the same way. 190 divided by 2.125 is about 89. The upload used the worse axis in the message, the width, and rounded. I have read three of these mails this spring. They all speak in effective resolution, and families hear "the photo is blurry" or "the scanner was too cheap." Sometimes the photo is blurry. This time the photo was undersampled. Those are different repairs, and only one of them involves a slider.

A 300 pixel-per-inch minimum at 1.625 inches is 488 pixels across. At 2.125 inches tall it is 638 pixels. The face crop would need to grow from 150 by 190 to something at least 488 by 638, and every new pixel would be a guess. That is the size of the hole. I wrote it on a sticky and put it on the monitor, because the parent was already searching for a button with the word resolution on it.

The face crop, not the whole 4 by 6

I also measured the border. The glossy print has a white machine border of about 0.15 inch, and the 72 ppi scan included it. The pictorial area is smaller than 288 by 432. The face crop they made was the right instinct and the wrong source. Cropping does not invent samples. It throws the sweater and the border away so the robot stops averaging the frame. The robot then divides the remaining pixels by the slot. Fewer irrelevant pixels, same face, same failure.

If you want the arithmetic of a print beside a file, including why a number on a scanner box is not sharpness, I put that in what is a picture resolution. This note stays with Jordan, because the general definition did not get the portrait into the book.

The tag that pretended to be a rescan

Before they called me, a cousin changed the resolution field. The cousin is a designer and meant well. The file became jordan-face-72-tagged300.png. Pixel dimensions, 150 by 190. Embedded resolution tag, 300 pixels per inch. I want to be dull about this, because dull is the repair.

A resolution tag is a suggestion to layout software about the default placed size. At 300 pixels per inch, 150 pixels wants to be half an inch wide. The yearbook template does not place a half-inch face in that slot. The template forces the frame to 1.625 inches. The effective number falls back to 92. The cousin sent a screenshot of the info panel showing 300, and the plant sent another bounce showing 92. Both screenshots were telling the truth about different fields.

I opened the tagged file and the untagged file and flipped between them at 100 percent. Same iris. Same three-pixel catchlight. Same single-pixel mole. The tag had not improved photo resolution in any sense a press can use. It had changed a label. I wrote the cousin a short note, not a lecture, and pointed at how to change resolution of image for the version of this I wish every handoff included. Then I went back to the pixels, which were still 150 by 190.

There is a checkbox in some drivers and in Photoshop's image size dialog that resamples while you type a new pixel-per-inch number. The cousin had not checked it. If they had, the software would have invented the extra pixels with bicubic or whatever the default was, and the plant might have gone quiet while the face went mushy. A quiet robot is not the same as a true face. I would rather the robot complain.

The resize I made as a control

I still built the dumb enlargement so the parent could see it. jordan-face-bicubic.png is 488 by 620, bicubic from the 150 by 190 crop. It meets the width target and falls a little short on the height, which I would have padded with background if I had been desperate. I was not desperate. The print was in a drawer.

At the slot size the bicubic file looks like a soft school portrait from a cheap printer, which is almost fair, because the source print was small and the scan was rude. At 100 percent the eyes are gray ovals. The rectangular catchlight has become a pale smear with no corners. The mole has become a brownish blush about four pixels wide, uncountable as one mark. The hairline is a gradient from background blue to brown, and you could put it anywhere in a ten-pixel band and not be wrong. That is a resize doing the only thing it can. It is not a scandal. It is a blur you could have predicted with a thumbnail.

I did not send it to the plant. A file that numerically clears 300 can still look worse than the other portraits on the page, and the editor would have asked me to "sharpen it up" the week of the deadline. Sharpening that bicubic result outlines the blush and calls it a mole. I have made that mistake on a different book. Not this one.

Close crop of a backyard print on scanner glass with pixel damage, the problem this guide is measuring.
Close crop of a backyard print on scanner glass with pixel damage, the problem this guide is measuring.
The same crop of a backyard print on scanner glass without the pixel damage, kept for comparison.
The same crop of a backyard print on scanner glass without the pixel damage, kept for comparison.

I keep this generated picture next to soft scans when a family asks me to make the child "more crisp" the way a diagram is crisp. The sample is a flat illustration, a teal panel, a sun in a white square, a round head, edges left clean. It was drawn with hard shapes. Jordan was not. A clean sample shows the ceiling of what edges can look like when the picture was born as shapes. A scanned glossy portrait, even a good scan, has dye and focus and a smile that moved. I do not grade Jordan against the cartoon. I grade Jordan against the print in the drawer.

The model pass, and the face it gave back

The parent had already run the crop through a phone app before calling. The app's export was jordan-face-app.png, 1024 by 1024, with the head recentered and the background replaced by a smoother blue. I am mentioning it so I can say I did not start from it. Phone apps that replace the seamless are building a new portrait. The yearbook has a spread of the same blue behind every child. A private blue is how you make one kid look pasted on.

I ran my own test from jordan-face-72.png, not from the app. The AI image upscaler gave me jordan-face-sr4x.png, 600 by 760. Numerically the plant would have been satisfied. Visually I was not, and I am the one who has to recognize children from files this small.

Catchlights, the mole, the hairline

The camera-left eye, the narrow one, came back the same width as the other eye. The smile's asymmetry was treated as a defect. Both eyes grew round catchlights. The source had one rectangular glint, three pixels, in one eye. The model owns a prior about school portraits, and the prior has two bright dots. Jordan's face in that gym did not.

The mole split. There is the original dark pixel's descendant, and there is a second softer mark closer to the nose, about a quarter of the way across the cheek. I put the 4x crop beside the glossy print under a lamp. The print has one mole. I do not need a committee. One mole.

The hairline grew a widow's peak, a soft triangle the buzz cut does not have. The sides of the head, which are clipped short, gained a faint fuzz the model uses for hair in general. From arm's length in a thumbnail it reads as "a kid." In the book, next to last year's portrait, the parent would have felt the wrongness and might not have had the words. My words were: this is a plausible eighth-grader and it is not this one.

The background smoothed and a vignette appeared at the corners, darker by about eight levels. The packet print's blue is uneven because the seamless was wrinkled. That wrinkle is ugly and shared by the other scans the school made. Replacing it with a catalog vignette makes Jordan the special one, which is a kind of edit I will do for a framed print in a hallway and will not do for a book that is trying to put forty children on one ground.

I saved the rejected upscale in a folder named _rejected and sent the parent a side-by-side at the slot size, with arrows on the mole and the peak. They agreed in one line. Do not upload that. The agreement matters. I do not bury a invented face in a yearbook because the preflight turned green.

Skin texture was the quieter lie. The 150 pixel face has no pores. The 4x file has a fine, even grain across the forehead, the same grain on the nose, the same grain on the chin. Real kids are blotchier. Even grain is a signature of a model that was asked for detail and paid in freckle-colored noise. On a press halftone some of it would have died. Enough would have survived to make the cheeks look powdered. I am not interested in powdered.

The rescan, with the boxes I told them to leave empty

I sent a short list, the kind a tired person can do at 9 at night.

  • Color photo, not document and not text.
  • 600 samples per inch. The driver says dpi. I mean samples across each inch of the print.
  • TIFF, not JPEG, not "small email."
  • Unsharp mask off. The driver sharpen is coarse and it rings the sweater.
  • Dust removal off. On this model it has eaten moles for me before. A mole is a dark speck. That is the whole tragedy of the feature.
  • Pro on the glass, glossy side down, corner against the arrow. No auto-rotate. I will rotate.
  • Do not scan the preview and send me a photo of the screen.

They did it. jordan-4x6-600.tif arrived at 2400 by 3600, about 48 megabytes, a little rotated. I measured the rotation against the print's white border, 0.4 degrees, and straightened. The border is a gift. A scanned print with a border gives you a straight line the portrait itself may not contain.

The face crop from that TIFF is jordan-face-600.png, 1020 by 1320. Put 1020 across 1.625 inches and you are near 628 pixels per inch. The plant minimum is 300. The robot would have to work to complain. I checked the iris before I celebrated. At 600 samples per inch of this particular glossy print, the iris is a brown disk with a darker rim and the rectangular catchlight has corners again. The narrow eye stays narrow. The mole is one mark, slightly soft because the packet print was slightly soft, about the size of a typed period. Eyelashes are not individual hairs. They are a dark fringe. That fringe is the ceiling. The studio file would have had more. The studio file is gone. I will not paint lashes on a child to pretend otherwise.

There is paper texture in the blues if you go looking, a fine pebble from the glossy surface, plus one long hair across the sweater that was on the glass. I cloned the hair, about forty pixels of sweater knit sampled from beside it, and left the pebble. The pebble is the print. Removing it is a different photograph.

Why the good scan did not get an upscale

628 effective pixels per inch does not need to become 1200. The press will screen this page. Extra invented pores do not survive as truth. They survive as a waxy difference between Jordan and the kid in the next slot, whose parent scanned an 8 by 10 at a sane setting and stopped. I ran no model on jordan-4x6-600.tif. I also did not run one on the crop. The enhance photo quality path is what I use when a file is dull or crushed and the edges are already real. This scan was a little dull from glare off the gloss. That is a contrast problem at the size of a radius, not a missing-pixel problem.

I applied one unsharp mask to the crop. Radius 0.8 pixels, amount 40, threshold 2. Then I looked at the mole and the catchlight corners. The mole did not grow a halo. The catchlight corners did not become stars. The fringe of lashes darkened and did not sprout new hairs. I undid the mask, looked, redid it, and kept it. That is the whole sharpening session. If you want a longer argument about when a slider is lying to you, it will not fit in this job. The job was the rescan.

What I uploaded, and what the site did next

jordan-face-final.jpg is 1020 by 1320, sRGB, JPEG quality 11, profile embedded. I also put the TIFF in the folder for the parent and told them to upload the JPEG, because the yearbook site rejects big TIFFs and then displays a generic error the family reads as another resolution failure. I have lost an hour to that error.

The site recompressed the JPEG. I downloaded the proof PDF, ripped the image back out, and got a file around quality 8, 1020 by 1320 still. The iris survived. The mole survived. The effective resolution readout on the proof said 628. Somebody at the plant had also snapped the frame to the template, which shaved six pixels of background on the right and nothing of the ear. I checked the ear. Ears are where template snaps eat children.

Color: the scan was a little cool, the gloss reading blue. I warmed the midtones a few points so the sweater navy matched a photograph of the physical print shot in daylight on the parent's table, print-on-table.jpg, which I used only as a reference and did not embed. I did not try to match the studio's original blue. I do not have it. Matching a memory of school-photo blue is how skin goes orange. The cheek stayed in the range I sampled on the first TIFF, within three levels after the warm. Close enough for a book that will be printed on the same paper as the lunch menu.

I looked at how to tell image resolution while I was writing the parent a final note, and then I realized they did not need the general method. They needed one sentence. Upload jordan-face-final.jpg. If the site shows a thumbnail that looks crunchy, do not re-export a smaller one. Call me. They did not call. The proof came back clean. Jordan is in the book with one mole.

The files, in the order I made them

FilePixelsWhat it was
jordan-4x6-72.tif288 by 432Packet print scanned at 72. The poverty.
jordan-face-72.png150 by 190Face crop. Plant read about 92 ppi in the slot.
jordan-face-72-tagged300.png150 by 190Same picture, 300 tag. Still 92 effective.
jordan-face-bicubic.png488 by 620Resize control. Gray eyes, blush instead of a mole.
jordan-face-app.png1024 by 1024Phone app. New background. Not used.
jordan-face-sr4x.png600 by 760Model. Two moles, matched eyes, fake peak. Rejected.
jordan-4x6-600.tif2400 by 3600Rescan at 600. The one that holds the face.
jordan-face-final.jpg1020 by 1320Crop, hair cloned, mild sharpen. Uploaded.

When the proof is wrong next year I will ask for this table before I ask for a new export. The failure is usually an earlier row wearing a later name.

What I want from the next packet

If the studio is alive, get the digital file from the studio. A scan of a 4 by 6 is a copy of a copy, and 600 samples per inch of a soft gloss is still a soft gloss. We were lucky the print existed. A lot of households have already thrown the packet away and kept the 72 ppi TIFF because it was on the desktop with a sensible name.

If the print is what you have, scan it at 600 before you crop, and crop after. Leave dust removal off when the child has freckles or a mole or a gap in the teeth you care about. Do not run a background-replacement app and then ask a plant to treat the result as the school photo. The blue behind Jordan is part of the class, wrinkles and all.

And if a cousin offers to set the field to 300, let them, and then look at the pixel dimensions. If those dimensions did not change, nothing you can print has changed. I improve photo resolution, when the phrase means anything I can stand behind, by getting more real samples off the physical print or by finding the camera file. I do not do it by teaching a model the average eighth-grader and letting that average wear Jordan's sweater.

Questions that come up after the file is open

Will tagging a 72 ppi scan as 300 ppi satisfy a yearbook plant?

No. The tag changes how large the file wants to place, not how many pixels it holds. The plant reads pixels divided by the slot size, and that number stayed too low. I have watched this bounce twice on the same portrait.

Can an upscaler improve photo resolution enough for a face in print?

It can add pixels. It cannot promise the face. On this scan it equalized the eyes, moved a mole, and drew a hairline that was not on the kid. I kept that file off the upload and rescanned the print.

What scan setting should a parent use on a packet portrait?

Color photo, 600 samples per inch, TIFF, unsharp mask off, dust removal off. Dust removal treats a mole as debris. Align the print to the scanner arrow and send the TIFF, not a screenshot of the preview.

The good scan looks a little soft. Should it be upscaled too?

Not if the placed size already clears the plant minimum by a wide margin. This face sat near 600 pixels per inch in a slot that asked for 300. Further invention would have plasticized skin the press was about to halftone anyway.