mirror of
https://github.com/python-pillow/Pillow.git
synced 2025-01-24 16:24:11 +03:00
Merge pull request #3450 from radarhere/imageshow
ImageShow improvements
This commit is contained in:
commit
5c16528fdf
|
@ -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()
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue
Block a user