PIL Image.show() und Imagemagick

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
noisefloor
User
Beiträge: 3854
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

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
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

@noisefloor: wenn es dennoch tut, dann gibt es da wohl ein undokumentiertes Feature, dass nicht nur 'xv' sondern auch 'display' von Imagemagick verwendet wird.
Benutzeravatar
noisefloor
User
Beiträge: 3854
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

wahrscheinlich...

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

Gruß, noisefloor
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.
Benutzeravatar
noisefloor
User
Beiträge: 3854
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

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
Antworten