Seite 1 von 1

PIL Image.show() und Imagemagick

Verfasst: Samstag 15. August 2015, 13:08
von noisefloor
Hallo,

ich haben ein gelöstes Problem und verstehe nicht, warum es funktioniert :-)

Also: wenn man bei einer ootb Installation von Ubuntu 14.04 oder Raspbian mit installiertem Python-Modul Pillow folgenden Code ausführt:

Code: Alles auswählen

from PIL import Image
im = Image.open('foo.png')
im.show()
passiert nichts. Es wird das (natürlich existierende) Bild nicht angezeigt, aber auch kein Fehler geworfen. Lt. Doku von Pillow ruft `show()` das total antiquierte Programm `xv` auf, was bei Ubuntu und Debian schon gar nicht mehr in den Quellen ist.

Man man aber das Paket `imagemagick` installiert, funktioniert der obigen Code genau so, ImageMagick zeigt das Bild. Nur warum das dann funktioniert erschließt sich mir nicht - hat da jemand mal ein bisschen Erleuchtung für mich? :-)

Gruß, noisefloor

Re: PIL Image.show() und Imagemagick

Verfasst: Samstag 15. August 2015, 16:15
von Sirius3
@noisefloor: wenn es dennoch tut, dann gibt es da wohl ein undokumentiertes Feature, dass nicht nur 'xv' sondern auch 'display' von Imagemagick verwendet wird.

Re: PIL Image.show() und Imagemagick

Verfasst: Samstag 15. August 2015, 17:01
von noisefloor
Hallo,

wahrscheinlich...

Das dokumentierte Feature, `show(command='name_des_bildbetrachters')` hat dafür auf keinem meiner System funktioniert...

Gruß, noisefloor

Re: PIL Image.show() und Imagemagick

Verfasst: Samstag 15. August 2015, 17:09
von BlackJack
@noisefloor: Die Dokumentation wurde erst einmal 1:1 von PIL übernommen und das mit dem Viewer hat wohl noch niemand angepasst‽ Im Quelltext von `PIL.ImageShow` sieht man jedenfalls das auf ``display`` und ``xv`` getestet wird und falls vorhanden jeweils registriert wird.

Re: PIL Image.show() und Imagemagick

Verfasst: Samstag 15. August 2015, 17:32
von noisefloor
Hallo,

@BlackJack: Danke :-)

Was als Alternative übrigens auch funktioniert (zumindest unter Ubuntu und Raspbian) ist, `xli` zu installieren und einen Link von `xv` auf `xli` zu erstellen:

Code: Alles auswählen

$ sudo apt-get install xli
$ cd /usr/local/bin
$ sudo ln -s /usr/bin/xli xv
Gruß, noisefloor