Skip to content

Commit 8945875

Browse files
committed
Populate DPI from JFIF cm density
1 parent e8dad19 commit 8945875

File tree

3 files changed

+7
-0
lines changed

3 files changed

+7
-0
lines changed

Tests/images/jfif_unit_cm.jpg

391 Bytes
Loading

Tests/test_file_jpeg.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,10 @@ def test(xdpi: int, ydpi: int | None = None) -> tuple[int, int] | None:
181181
assert test(100, 200) == (100, 200)
182182
assert test(0) is None # square pixels
183183

184+
def test_dpi_jfif_cm(self):
185+
with Image.open("Tests/images/jfif_unit_cm.jpg") as im:
186+
assert im.info["dpi"] == (2.54, 5.08)
187+
184188
@mark_if_feature_version(
185189
pytest.mark.valgrind_known_error, "libjpeg_turbo", "2.0", reason="Known Failing"
186190
)

src/PIL/JpegImagePlugin.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,9 @@ def APP(self: JpegImageFile, marker: int) -> None:
9090
else:
9191
if jfif_unit == 1:
9292
self.info["dpi"] = jfif_density
93+
elif jfif_unit == 2: # cm
94+
# 1 dpcm = 2.54 dpi
95+
self.info["dpi"] = tuple(d * 2.54 for d in jfif_density)
9396
self.info["jfif_unit"] = jfif_unit
9497
self.info["jfif_density"] = jfif_density
9598
elif marker == 0xFFE1 and s[:6] == b"Exif\0\0":

0 commit comments

Comments
 (0)