Merge pull request #2447 from hugovk/test-mic

Test MicImagePlugin for correctness
This commit is contained in:
wiredfool 2017-06-13 22:20:44 +01:00 committed by GitHub
commit 8323ab1149
9 changed files with 47 additions and 9 deletions

View File

@ -97,6 +97,7 @@ class MicImageFile(TiffImagePlugin.TiffImageFile):
return self.frame return self.frame
# #
# -------------------------------------------------------------------- # --------------------------------------------------------------------

BIN
Tests/images/hopper.mic Normal file

Binary file not shown.

View File

@ -2,7 +2,6 @@ from helper import unittest, PillowTestCase
from PIL import Image, FliImagePlugin from PIL import Image, FliImagePlugin
# sample ppm stream
# created as an export of a palette image from Gimp2.6 # created as an export of a palette image from Gimp2.6
# save as...-> hopper.fli, default options. # save as...-> hopper.fli, default options.
test_file = "Tests/images/hopper.fli" test_file = "Tests/images/hopper.fli"

View File

@ -3,7 +3,6 @@ from helper import unittest, PillowTestCase, hopper
import io import io
from PIL import Image, IcoImagePlugin from PIL import Image, IcoImagePlugin
# sample ppm stream
TEST_ICO_FILE = "Tests/images/hopper.ico" TEST_ICO_FILE = "Tests/images/hopper.ico"

View File

@ -1,10 +1,50 @@
from helper import unittest, PillowTestCase from helper import unittest, PillowTestCase, hopper
from PIL import MicImagePlugin from PIL import Image, ImagePalette, MicImagePlugin
TEST_FILE = "Tests/images/hopper.mic"
class TestFileMic(PillowTestCase): class TestFileMic(PillowTestCase):
def test_sanity(self):
im = Image.open(TEST_FILE)
im.load()
self.assertEqual(im.mode, "RGBA")
self.assertEqual(im.size, (128, 128))
self.assertEqual(im.format, "MIC")
# Adjust for the gamma of 2.2 encoded into the file
lut = ImagePalette.make_gamma_lut(1/2.2)
im = Image.merge('RGBA', [chan.point(lut) for chan in im.split()])
im2 = hopper("RGBA")
self.assert_image_similar(im, im2, 10)
def test_n_frames(self):
im = Image.open(TEST_FILE)
self.assertEqual(im.n_frames, 1)
def test_is_animated(self):
im = Image.open(TEST_FILE)
self.assertFalse(im.is_animated)
def test_tell(self):
im = Image.open(TEST_FILE)
self.assertEqual(im.tell(), 0)
def test_seek(self):
im = Image.open(TEST_FILE)
im.seek(0)
self.assertEqual(im.tell(), 0)
self.assertRaises(EOFError, lambda: im.seek(99))
self.assertEqual(im.tell(), 0)
def test_invalid_file(self): def test_invalid_file(self):
# Test an invalid OLE file # Test an invalid OLE file
invalid_file = "Tests/images/flower.jpg" invalid_file = "Tests/images/flower.jpg"

View File

@ -2,11 +2,10 @@ from helper import hopper, unittest, PillowTestCase
from PIL import Image, PixarImagePlugin from PIL import Image, PixarImagePlugin
# sample ppm stream
TEST_FILE = "Tests/images/hopper.pxr" TEST_FILE = "Tests/images/hopper.pxr"
class TestImagePsd(PillowTestCase): class TestFilePixar(PillowTestCase):
def test_sanity(self): def test_sanity(self):
im = Image.open(TEST_FILE) im = Image.open(TEST_FILE)

View File

@ -2,7 +2,6 @@ from helper import hopper, unittest, PillowTestCase
from PIL import Image, PsdImagePlugin from PIL import Image, PsdImagePlugin
# sample ppm stream
test_file = "Tests/images/hopper.psd" test_file = "Tests/images/hopper.psd"

View File

@ -2,7 +2,6 @@ from helper import unittest, PillowTestCase, hopper
from PIL import Image, XpmImagePlugin from PIL import Image, XpmImagePlugin
# sample ppm stream
TEST_FILE = "Tests/images/hopper.xpm" TEST_FILE = "Tests/images/hopper.xpm"

View File

@ -124,7 +124,7 @@ are available::
eliminating unused colors. This is only useful if the palette can eliminating unused colors. This is only useful if the palette can
be compressed to the next smaller power of 2 elements. be compressed to the next smaller power of 2 elements.
**palette** **palette**
Use the specified palette for the saved image. The palette should Use the specified palette for the saved image. The palette should
be a bytes or bytearray object containing the palette entries in be a bytes or bytearray object containing the palette entries in
RGBRGB... form. It should be no more than 768 bytes. Alternately, RGBRGB... form. It should be no more than 768 bytes. Alternately,
@ -789,6 +789,8 @@ PIL identifies and reads Microsoft Image Composer (MIC) files. When opened, the
first sprite in the file is loaded. You can use :py:meth:`~file.seek` and first sprite in the file is loaded. You can use :py:meth:`~file.seek` and
:py:meth:`~file.tell` to read other sprites from the file. :py:meth:`~file.tell` to read other sprites from the file.
Note that there may be an embedded gamma of 2.2 in MIC files.
MPO MPO
^^^ ^^^