Populate JPEG DPI from JFIF cm density #8633
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Resolves #8632
Pillow uses JFIF density to set
info["dpi"]
, but only when the JFIF unit is 1, meaning that the JFIF density is per inch.Pillow/src/PIL/JpegImagePlugin.py
Lines 91 to 94 in e8dad19
This PR updates it so that when the JFIF unit is 2, meaning that the density is per cm, the density is converted to be per inch and used to set
info["dpi"]
.See page 11 of https://www.ecma-international.org/wp-content/uploads/ECMA_TR-98_1st_edition_june_2009.pdf for the relevant specification.
For the test image, I copied the existing test image multiple_exif.jpg, and manually modified the file to have a different JFIF unit, and also to set the X and Y density to be different to allow for better testing.