From 8d74f9cc5f8e678cb910d1e9e51d8caae54f5bb4 Mon Sep 17 00:00:00 2001 From: Stefan van der Walt Date: Mon, 11 Apr 2011 08:53:26 +0200 Subject: [PATCH] BUG: Import PIL.Image correctly. Skip tests if not available. --- scikits/image/io/collection.py | 3 +++ scikits/image/io/tests/test_collection.py | 12 ++++++++++++ 2 files changed, 15 insertions(+) diff --git a/scikits/image/io/collection.py b/scikits/image/io/collection.py index 753fadfc..fb55b1a9 100644 --- a/scikits/image/io/collection.py +++ b/scikits/image/io/collection.py @@ -40,6 +40,8 @@ class MultiImage(object): The last accessed frame is cached, all other frames will have to be read from file. + The current implementation makes use of PIL. + Examples -------- >>> from scikits.image import data_dir @@ -92,6 +94,7 @@ class MultiImage(object): def _getframe(self, framenum): """Open the image and extract the frame.""" + from PIL import Image img = Image.open(self.filename) img.seek(framenum) return np.asarray(img, dtype=self._dtype) diff --git a/scikits/image/io/tests/test_collection.py b/scikits/image/io/tests/test_collection.py index 499d288f..2f74a89a 100644 --- a/scikits/image/io/tests/test_collection.py +++ b/scikits/image/io/tests/test_collection.py @@ -3,11 +3,19 @@ import os.path import numpy as np from numpy.testing import * +from numpy.testing.decorators import skipif from scikits.image import data_dir from scikits.image.io import ImageCollection, MultiImage +try: + from PIL import Image +except ImportError: + PIL_available = False +else: + PIL_available = True + if sys.version_info[0] > 2: basestring = str @@ -58,9 +66,11 @@ class TestMultiImage(): # convert im1.tif im2.tif -adjoin multipage.tif self.img = MultiImage(os.path.join(data_dir, 'multipage.tif')) + @skipif(not PIL_available) def test_len(self): assert len(self.img) == 2 + @skipif(not PIL_available) def test_getitem(self): num = len(self.img) for i in range(-num, num): @@ -74,6 +84,7 @@ class TestMultiImage(): assert_raises(IndexError, return_img, num) assert_raises(IndexError, return_img, -num-1) + @skipif(not PIL_available) def test_files_property(self): assert isinstance(self.img.filename, basestring) @@ -81,6 +92,7 @@ class TestMultiImage(): self.img.filename = f assert_raises(AttributeError, set_filename, 'newfile') + @skipif(not PIL_available) def test_conserve_memory_property(self): assert isinstance(self.img.conserve_memory, bool)