diff --git a/Tests/images/hopper.pnm b/Tests/images/hopper.pnm new file mode 100644 index 000000000..52368b2e2 Binary files /dev/null and b/Tests/images/hopper.pnm differ diff --git a/Tests/test_file_ico.py b/Tests/test_file_ico.py index b0d33e33f..f6244e086 100644 --- a/Tests/test_file_ico.py +++ b/Tests/test_file_ico.py @@ -14,6 +14,7 @@ class TestFileIco(PillowTestCase): self.assertEqual(im.mode, "RGBA") self.assertEqual(im.size, (16, 16)) self.assertEqual(im.format, "ICO") + self.assertEqual(im.get_format_mimetype(), "image/x-icon") def test_invalid_file(self): with open("Tests/images/flower.jpg", "rb") as fp: diff --git a/Tests/test_file_pcx.py b/Tests/test_file_pcx.py index 9e42a86f7..7608db47c 100644 --- a/Tests/test_file_pcx.py +++ b/Tests/test_file_pcx.py @@ -13,6 +13,7 @@ class TestFilePcx(PillowTestCase): self.assertEqual(im2.mode, im.mode) self.assertEqual(im2.size, im.size) self.assertEqual(im2.format, "PCX") + self.assertEqual(im2.get_format_mimetype(), "image/x-pcx") self.assert_image_equal(im2, im) def test_sanity(self): diff --git a/Tests/test_file_ppm.py b/Tests/test_file_ppm.py index dc239cc4c..fa024f2cd 100644 --- a/Tests/test_file_ppm.py +++ b/Tests/test_file_ppm.py @@ -1,4 +1,4 @@ -from .helper import PillowTestCase +from .helper import PillowTestCase, hopper from PIL import Image @@ -36,6 +36,16 @@ class TestFilePpm(PillowTestCase): reloaded = Image.open(f) self.assert_image_equal(im, reloaded) + def test_pnm(self): + im = Image.open('Tests/images/hopper.pnm') + self.assert_image_similar(im, hopper(), 0.0001) + + f = self.tempfile('temp.pnm') + im.save(f) + + reloaded = Image.open(f) + self.assert_image_equal(im, reloaded) + def test_truncated_file(self): path = self.tempfile('temp.pgm') with open(path, 'w') as f: diff --git a/Tests/test_file_tga.py b/Tests/test_file_tga.py index 0dbfb309c..a8ab00d7f 100644 --- a/Tests/test_file_tga.py +++ b/Tests/test_file_tga.py @@ -37,6 +37,8 @@ class TestFileTga(PillowTestCase): path_no_ext, origin, "rle" if rle else "raw") original_im = Image.open(tga_path) + self.assertEqual(original_im.format, "TGA") + self.assertEqual(original_im.get_format_mimetype(), "image/x-tga") if rle: self.assertEqual( original_im.info["compression"], "tga_rle") diff --git a/docs/handbook/image-file-formats.rst b/docs/handbook/image-file-formats.rst index e9508eb3d..9aafbdd1c 100644 --- a/docs/handbook/image-file-formats.rst +++ b/docs/handbook/image-file-formats.rst @@ -553,7 +553,7 @@ The :py:meth:`~PIL.Image.Image.save` method supports the following options: PPM ^^^ -Pillow reads and writes PBM, PGM and PPM files containing ``1``, ``L`` or +Pillow reads and writes PBM, PGM, PPM and PNM files containing ``1``, ``L`` or ``RGB`` data. SGI diff --git a/src/PIL/IcoImagePlugin.py b/src/PIL/IcoImagePlugin.py index 16683fb8f..c1c0775da 100644 --- a/src/PIL/IcoImagePlugin.py +++ b/src/PIL/IcoImagePlugin.py @@ -295,3 +295,5 @@ class IcoImageFile(ImageFile.ImageFile): Image.register_open(IcoImageFile.format, IcoImageFile, _accept) Image.register_save(IcoImageFile.format, _save) Image.register_extension(IcoImageFile.format, ".ico") + +Image.register_mime(IcoImageFile.format, "image/x-icon") diff --git a/src/PIL/PcxImagePlugin.py b/src/PIL/PcxImagePlugin.py index 8094a2866..02dbe26e0 100644 --- a/src/PIL/PcxImagePlugin.py +++ b/src/PIL/PcxImagePlugin.py @@ -180,3 +180,5 @@ Image.register_open(PcxImageFile.format, PcxImageFile, _accept) Image.register_save(PcxImageFile.format, _save) Image.register_extension(PcxImageFile.format, ".pcx") + +Image.register_mime(PcxImageFile.format, "image/x-pcx") diff --git a/src/PIL/PpmImagePlugin.py b/src/PIL/PpmImagePlugin.py index e3e411cad..a1ac8d69e 100644 --- a/src/PIL/PpmImagePlugin.py +++ b/src/PIL/PpmImagePlugin.py @@ -164,6 +164,6 @@ def _save(im, fp, filename): Image.register_open(PpmImageFile.format, PpmImageFile, _accept) Image.register_save(PpmImageFile.format, _save) -Image.register_extensions(PpmImageFile.format, [".pbm", ".pgm", ".ppm"]) +Image.register_extensions(PpmImageFile.format, [".pbm", ".pgm", ".ppm", ".pnm"]) Image.register_mime(PpmImageFile.format, "image/x-portable-anymap") diff --git a/src/PIL/TgaImagePlugin.py b/src/PIL/TgaImagePlugin.py index 26b1e9c60..ae9697b29 100644 --- a/src/PIL/TgaImagePlugin.py +++ b/src/PIL/TgaImagePlugin.py @@ -226,4 +226,6 @@ def _save(im, fp, filename): Image.register_open(TgaImageFile.format, TgaImageFile) Image.register_save(TgaImageFile.format, _save) -Image.register_extension(TgaImageFile.format, ".tga") +Image.register_extensions(TgaImageFile.format, [".tga", ".icb", ".vda", ".vst"]) + +Image.register_mime(TgaImageFile.format, "image/x-tga")