Merge pull request #3450 from radarhere/imageshow

ImageShow improvements
This commit is contained in:
Hugo 2018-12-04 22:47:28 +02:00 committed by GitHub
commit 5c16528fdf
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 43 additions and 4 deletions

View File

@ -14,6 +14,9 @@ class TestImageShow(PillowTestCase):
# Test registering a viewer that is not a class
ImageShow.register("not a class")
# Restore original state
ImageShow._viewers.pop()
def test_show(self):
class TestViewer:
methodCalled = False
@ -28,6 +31,9 @@ class TestImageShow(PillowTestCase):
self.assertTrue(ImageShow.show(im))
self.assertTrue(viewer.methodCalled)
# Restore original state
ImageShow._viewers.pop(0)
def test_viewer(self):
viewer = ImageShow.Viewer()
@ -35,6 +41,10 @@ class TestImageShow(PillowTestCase):
self.assertRaises(NotImplementedError, viewer.get_command, None)
def test_viewers(self):
for viewer in ImageShow._viewers:
viewer.get_command('test.jpg')
if __name__ == '__main__':
unittest.main()

View File

@ -17,6 +17,8 @@ from __future__ import print_function
from PIL import Image
import os
import sys
import subprocess
import tempfile
if sys.version_info.major >= 3:
from shlex import quote
@ -128,6 +130,21 @@ elif sys.platform == "darwin":
quote(file))
return command
def show_file(self, file, **options):
"""Display given file"""
f, path = tempfile.mkstemp()
f.write(file)
f.close()
with open(path, "r") as f:
subprocess.Popen([
'im=$(cat);'
'open -a /Applications/Preview.app $im;'
'sleep 20;'
'rm -f $im'
], shell=True, stdin=f)
os.remove(path)
return 1
register(MacViewer)
else:
@ -148,11 +165,23 @@ else:
format = "PNG"
options = {'compress_level': 1}
def get_command(self, file, **options):
command = self.get_command_ex(file, **options)[0]
return "(%s %s; rm -f %s)&" % (command, quote(file), quote(file))
def show_file(self, file, **options):
command, executable = self.get_command_ex(file, **options)
command = "(%s %s; rm -f %s)&" % (command, quote(file),
quote(file))
os.system(command)
"""Display given file"""
f, path = tempfile.mkstemp()
f.write(file)
f.close()
with open(path, "r") as f:
command = self.get_command_ex(file, **options)[0]
subprocess.Popen([
'im=$(cat);' +
command+' $im;'
'rm -f $im'
], shell=True, stdin=f)
os.remove(path)
return 1
# implementations