mirror of
				https://github.com/python-pillow/Pillow.git
				synced 2025-11-01 00:17:27 +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