From f383308c57e2b70c2a32ce0e7b006e7d83d2443c Mon Sep 17 00:00:00 2001 From: Andrew Murray Date: Sat, 27 Feb 2021 21:28:38 +1100 Subject: [PATCH] Added IPythonViewer --- Tests/test_imageshow.py | 18 +++++++++++++++++- src/PIL/ImageShow.py | 14 ++++++++++++++ 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/Tests/test_imageshow.py b/Tests/test_imageshow.py index 78e80f521d6..5981e22c012 100644 --- a/Tests/test_imageshow.py +++ b/Tests/test_imageshow.py @@ -62,4 +62,20 @@ def test_viewer(): def test_viewers(): for viewer in ImageShow._viewers: - viewer.get_command("test.jpg") + try: + viewer.get_command("test.jpg") + except NotImplementedError: + pass + + +def test_ipythonviewer(): + pytest.importorskip("IPython", reason="IPython not installed") + for viewer in ImageShow._viewers: + if isinstance(viewer, ImageShow.IPythonViewer): + test_viewer = viewer + break + else: + assert False + + im = hopper() + assert test_viewer.show(im) == 1 diff --git a/src/PIL/ImageShow.py b/src/PIL/ImageShow.py index fceb6537838..f1cf83e33c5 100644 --- a/src/PIL/ImageShow.py +++ b/src/PIL/ImageShow.py @@ -114,6 +114,20 @@ def show_file(self, file, **options): # -------------------------------------------------------------------- +class IPythonViewer(Viewer): + def show_image(self, image, **options): + display(image) + return 1 + + +try: + from IPython.display import display +except ImportError: + pass +else: + register(IPythonViewer) + + class WindowsViewer(Viewer): """The default viewer on Windows is the default system application for PNG files."""