FA-79118 / Image orientation metadata / Member archive
Baking a rotated scan leaves X and Y resolution unswapped · case 03
Anisotropic scans print stretched after their pixels were rotated upright.
Case contract
After pixels have been baked upright, rewrite the metadata dictionary. When the (valid) Orientation is 5..8, exchange PixelXDimension/PixelYDimension, ImageWidth/ImageLength and XResolution/YResolution, moving a lone member of a pair to its partner key. Invalid or missing Orientation values mean no swap. Orientation is set to 1 only if the key exists; XMP:Orientation, if present, becomes the string "1"; ThumbOrientation is removed because the thumbnail is regenerated. Return sorted [key, value] pairs.
Why this case matters
Camera, phone and scanner images carry an orientation hint separately from the stored pixels; galleries, thumbnailers, editors and upload pipelines must interpret it consistently or photos appear sideways, mirrored or doubly rotated.
One recorded failure
Sample boundary fixtureThis sample comes from the broken implementation of a controlled reproducer.
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| regression: resolution pair swap 0 | [["ImageLength", 1422], ["ImageWidth", 2871], ["Orientation", 1], ["PixelXDimension", 2248], ["PixelYDimension", 1678], ["XMP:Orientation", "1"], ["YResolution", 243]] | [["ImageLength", 1422], ["ImageWidth", 2871], ["Orientation", 1], ["PixelXDimension", 2248], ["PixelYDimension", 1678], ["XMP:Orientation", "1"], ["XResolution", 243]] | Failed |
MEMBER ARCHIVE
The complete case is available to members.
This record includes three runnable implementations, regression fixtures, execution results, and source hashes.
Member access is invitation-based. Sign in with your invited account to inspect the sources.
Sign in to the archive ↗