Skip to content

Commit 7d3b8e8

Browse files
authored
Merge branch 'master' into mime-types
2 parents 1d63703 + 975fcca commit 7d3b8e8

File tree

2 files changed

+25
-1
lines changed

2 files changed

+25
-1
lines changed

Tests/test_file_ppm.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,14 @@ def test_sanity(self):
1414
self.assertEqual(im.mode, "RGB")
1515
self.assertEqual(im.size, (128, 128))
1616
self.assertEqual(im.format, "PPM")
17+
self.assertEqual(im.get_format_mimetype(), "image/x-portable-pixmap")
1718

1819
def test_16bit_pgm(self):
1920
im = Image.open('Tests/images/16_bit_binary.pgm')
2021
im.load()
2122
self.assertEqual(im.mode, 'I')
2223
self.assertEqual(im.size, (20, 100))
24+
self.assertEqual(im.get_format_mimetype(), "image/x-portable-graymap")
2325

2426
tgt = Image.open('Tests/images/16_bit_binary_pgm.png')
2527
self.assert_image_equal(im, tgt)
@@ -59,3 +61,16 @@ def test_neg_ppm(self):
5961

6062
with self.assertRaises(IOError):
6163
Image.open('Tests/images/negative_size.ppm')
64+
65+
def test_mimetypes(self):
66+
path = self.tempfile('temp.pgm')
67+
68+
with open(path, 'w') as f:
69+
f.write("P4\n128 128\n255")
70+
im = Image.open(path)
71+
self.assertEqual(im.get_format_mimetype(), "image/x-portable-bitmap")
72+
73+
with open(path, 'w') as f:
74+
f.write("PyCMYK\n128 128\n255")
75+
im = Image.open(path)
76+
self.assertEqual(im.get_format_mimetype(), "image/x-portable-anymap")

src/PIL/PpmImagePlugin.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,14 @@ def _open(self):
7070
s = self.fp.read(1)
7171
if s != b"P":
7272
raise SyntaxError("not a PPM file")
73-
mode = MODES[self._token(s)]
73+
magic_number = self._token(s)
74+
mode = MODES[magic_number]
75+
76+
self.custom_mimetype = {
77+
b"P4": "image/x-portable-bitmap",
78+
b"P5": "image/x-portable-graymap",
79+
b"P6": "image/x-portable-pixmap",
80+
}.get(magic_number)
7481

7582
if mode == "1":
7683
self.mode = "1"
@@ -158,3 +165,5 @@ def _save(im, fp, filename):
158165
Image.register_save(PpmImageFile.format, _save)
159166

160167
Image.register_extensions(PpmImageFile.format, [".pbm", ".pgm", ".ppm", ".pnm"])
168+
169+
Image.register_mime(PpmImageFile.format, "image/x-portable-anymap")

0 commit comments

Comments
 (0)