diff --git a/setup.cfg b/setup.cfg index e82f3b4445a47f24679fc30bd1f339fdcb5e4832..0c604f57e04cd74faf4721accfb0353964f80ebf 100644 --- a/setup.cfg +++ b/setup.cfg @@ -11,6 +11,7 @@ universal=1 # - dicomtest: Requires dcm2niix # - meshtest: Requires trimesh and rtree # - igziptest: Requires indexed_gzip +# - piltest: Requires Pillow # - noroottest: Need to be executed as # non-root user (will fail # otherwise) diff --git a/tests/test_bitmap.py b/tests/test_bitmap.py new file mode 100644 index 0000000000000000000000000000000000000000..b59c4083e2e822400f19ccc6895d500179fb4149 --- /dev/null +++ b/tests/test_bitmap.py @@ -0,0 +1,63 @@ +#!/usr/bin/env python +# +# test_bitmap.py - +# +# Author: Paul McCarthy <pauldmccarthy@gmail.com> +# + + +import numpy as np + +import pytest + +import fsl.utils.tempdir as tempdir +import fsl.data.bitmap as fslbmp + + +@pytest.mark.piltest +def test_bitmap(): + + from PIL import Image + + with tempdir.tempdir(): + data = np.random.randint(0, 255, (100, 200, 4), dtype=np.uint8) + img = Image.fromarray(data, mode='RGBA') + + img.save('image.png') + + bmp = fslbmp.Bitmap('image.png') + + assert bmp.name == 'image.png' + assert bmp.dataSource == 'image.png' + assert bmp.shape == (200, 100, 4) + + repr(bmp) + hash(bmp) + + assert np.all(bmp.data == np.fliplr(data.transpose(1, 0, 2))) + + +@pytest.mark.piltest +def test_bitmap_asImage(): + from PIL import Image + + with tempdir.tempdir(): + d3 = np.random.randint(0, 255, (100, 200, 3), dtype=np.uint8) + d4 = np.random.randint(0, 255, (100, 200, 4), dtype=np.uint8) + + img3 = Image.fromarray(d3, mode='RGB') + img4 = Image.fromarray(d4, mode='RGBA') + + img3.save('rgb.png') + img4.save('rgba.png') + + bmp3 = fslbmp.Bitmap('rgb.png') + bmp4 = fslbmp.Bitmap('rgba.png') + + i3 = bmp3.asImage() + i4 = bmp4.asImage() + + assert i3.shape == (200, 100, 1) + assert i4.shape == (200, 100, 1) + assert i3.nvals == 3 + assert i4.nvals == 4