The PIL show() method looks for the default viewer. How do I change this to a different viewer (of my choice)?

Paul St George email at paulstgeorge.com
Tue May 29 11:39:27 EDT 2018


Should the PIL code be corrected?


On 28/05/2018 06:34, Christian Gollwitzer wrote:
> Am 27.05.18 um 23:58 schrieb Cameron Simpson:
>> On 27May2018 20:15, Paul St George <email at paulstgeorge.com> wrote:
>>> This is very helpful indeed, thank you. Awe-inspiring.
>>>
>>> It occurred to me that I could edit the PIL/ImageShow.py, replacing 
>>> ‘xv’ (in five places) with the utility of my choice and using 
>>> ‘executable’ as the command.
>>>
>>> Or, is this just not done?
>>
>> It becomes a maintenance problem.
>>
>> Alternatively you could:
>>
>> Just write your own show function which accepts an Image and displays 
>> it with your program of choice. You might need to write some 
>> equivalent code which saves the Image to a file first, and removes it 
>> afterwards.
>>
>> You could copy the show() code into a function of your own (i.e. in 
>> your own codebase) modify that to suit, then monkeypatch the class:
>>
>>   Image.show = your_personal_show_function
>>
>> when your programme starts. That way the code changes are not in the 
>> PIL code.
>
> I think this is a bug/misfeature in the PIL code. On all 3 major 
> platforms there is a way to invoke the standard program for a given 
> file or URL. On Windows, it is "cmd.exe /c start ...", on OSX it is 
> "open ...." and on Linux it is "xdg-open ...". That way the file is 
> opened by whatever the user has set in his desktop environment.
>
> Technically, xdg-open needs not to be present on Linux, though it is 
> usually installed.
>
>     Christian
>

-- 
Paul St George
http://www.paulstgeorge.com
http://www.devices-of-wonder.com

+44(0)7595 37 1302




More information about the Python-list mailing list