Skip to content

Commit 23ef66e

Browse files
author
Steve Canny
committed
img: add TIFF formats to recognizer
1 parent 4434b1c commit 23ef66e

4 files changed

Lines changed: 22 additions & 4 deletions

File tree

docx/image/__init__.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
from docx.image.gif import Gif
2323
from docx.image.jpeg import Exif, Jfif
2424
from docx.image.png import Png
25+
from docx.image.tiff import Tiff
2526
from docx.opc.constants import CONTENT_TYPE as CT
2627
from docx.shared import lazyproperty
2728

@@ -33,6 +34,8 @@
3334
(Exif, 6, b'Exif'),
3435
(Gif, 0, b'GIF87a'),
3536
(Gif, 0, b'GIF89a'),
37+
(Tiff, 0, b'MM\x00*'), # big-endian (Motorola) TIFF
38+
(Tiff, 0, b'II*\x00'), # little-endian (Intel) TIFF
3639
)
3740

3841

docx/image/tiff.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
# encoding: utf-8
2+
3+
from __future__ import absolute_import, division, print_function
4+
5+
from .image import Image
6+
7+
8+
class Tiff(Image):
9+
"""
10+
Image header parser for TIFF images. Handles both big and little endian
11+
byte ordering.
12+
"""

tests/image/test_image.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
from docx.image.image import Image
1616
from docx.image.jpeg import Exif, Jfif
1717
from docx.image.png import Png
18+
from docx.image.tiff import Tiff
1819
from docx.opc.constants import CONTENT_TYPE as CT
1920

2021
from ..unitutil import (
@@ -38,10 +39,12 @@ def it_raises_on_unrecognized_image_stream(self):
3839
# fixtures -------------------------------------------------------
3940

4041
@pytest.fixture(params=[
41-
('python-icon.png', Png),
42-
('python-icon.jpeg', Jfif),
43-
('exif-420-dpi.jpg', Exif),
44-
('sonic.gif', Gif),
42+
('python-icon.png', Png),
43+
('python-icon.jpeg', Jfif),
44+
('exif-420-dpi.jpg', Exif),
45+
('sonic.gif', Gif),
46+
('72-dpi.tiff', Tiff),
47+
('little-endian.tif', Tiff),
4548
])
4649
def image_cls_lookup_fixture(self, request):
4750
image_filename, expected_class = request.param

tests/test_files/little-endian.tif

10.2 KB
Binary file not shown.

0 commit comments

Comments
 (0)