From c7cc36337a78ad2764630b0772ff5c58bc31022a Mon Sep 17 00:00:00 2001 From: Antony Lee Date: Mon, 11 Feb 2019 09:39:29 +0100 Subject: [PATCH] Fix imshow()ing PIL-opened images. We actually handle grayscale images just fine, but they need to be transformed into masked arrays like everyone else. --- lib/matplotlib/image.py | 10 +--------- lib/matplotlib/tests/test_image.py | 11 ++++++++++- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/lib/matplotlib/image.py b/lib/matplotlib/image.py index f1970a356536..0643d9f9aff2 100644 --- a/lib/matplotlib/image.py +++ b/lib/matplotlib/image.py @@ -649,15 +649,7 @@ def set_data(self, A): ---------- A : array-like """ - # check if data is PIL Image without importing Image - if hasattr(A, 'getpixel'): - if A.mode == 'L': - # greyscale image, but our logic assumes rgba: - self._A = pil_to_array(A.convert('RGBA')) - else: - self._A = pil_to_array(A) - else: - self._A = cbook.safe_masked_invalid(A, copy=True) + self._A = cbook.safe_masked_invalid(A, copy=True) if (self._A.dtype != np.uint8 and not np.can_cast(self._A.dtype, float, "same_kind")): diff --git a/lib/matplotlib/tests/test_image.py b/lib/matplotlib/tests/test_image.py index 7edfc38bda69..a6d08ba61929 100644 --- a/lib/matplotlib/tests/test_image.py +++ b/lib/matplotlib/tests/test_image.py @@ -18,7 +18,7 @@ from matplotlib.cbook import MatplotlibDeprecationWarning from matplotlib.image import (AxesImage, BboxImage, FigureImage, NonUniformImage, PcolorImage) -from matplotlib.testing.decorators import image_comparison +from matplotlib.testing.decorators import check_figures_equal, image_comparison from matplotlib.transforms import Bbox, Affine2D, TransformedBbox import pytest @@ -106,6 +106,15 @@ def test_image_python_io(): plt.imread(buffer) +@check_figures_equal() +def test_imshow_pil(fig_test, fig_ref): + pytest.importorskip("PIL") + img = plt.imread(os.path.join(os.path.dirname(__file__), + 'baseline_images', 'test_image', 'uint16.tif')) + fig_test.subplots().imshow(img) + fig_ref.subplots().imshow(np.asarray(img)) + + def test_imread_pil_uint16(): pytest.importorskip("PIL") img = plt.imread(os.path.join(os.path.dirname(__file__), pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy