web-dev-qa-db-fra.com

Image.show () n'affichera pas l'image

J'exécute un script python mais il ne montrera pas l'image.

J'ai une image Apple.jpg dans un répertoire avec ce programme et il devrait montrer l'image, mais ce n'est pas le cas. Voici le code: 

#!/usr/bin/env python

from PIL import Image

Apple = Image.open("Apple.jpg")
Apple.show()

Mon système d'exploitation est Ubuntu et ce programme est juste terminé sans montrer d'erreur.

30
user2131116

Cela fonctionne pour moi sur Ubuntu. Il affiche l'image avec Imagemagick. Essaye ça:

Sudo apt-get install imagemagick
41
Lennart Regebro

Je sais, c’est une vieille question mais voici comment je l’ai corrigée dans Ubuntu, au cas où quelqu'un aurait le même problème et ne voudrait pas installer imagemagick (ce qui ne résout pas la cause première du problème).

Le visualiseur par défaut sur Ubuntu peut être démarré à l’aide de la commande "eog" du terminal. Oreiller, par défaut, ne recherche que les commandes "xv" et "display", ces dernières étant fournies par imagemagick. Par conséquent, si vous installez imagemagick, l'appel de "display" ouvrira effectivement l'image . Mais pourquoi ne pas utiliser le visualiseur que nous avons déjà?

Le code Python pour ouvrir le visualiseur se trouve dans lib/python3.4/site-packages/PIL/ImageShow.py (ou l’équivalent de votre installation Python). Faites défiler la ligne 155 et trouvez le bloc de code en disant:

class DisplayViewer(UnixViewer):
    def get_command_ex(self, file, **options):
        command = executable = "display"
        return command, executable

if which("display"):
    register(DisplayViewer)

Copiez ce bloc et collez-le juste en dessous, en remplaçant la commande "display" par la commande "eog" d'Ubuntu:

class DisplayViewer(UnixViewer):
    def get_command_ex(self, file, **options):
        command = executable = "eog"
        return command, executable

if which("eog"):
    register(DisplayViewer)

Après avoir enregistré ImageShow.py, Pillow doit afficher correctement les images () dans le visualiseur par défaut.

10
Clemens Sielaff

C'est une vieille question, cependant, cela me pose des problèmes depuis un moment. Ceci est ma solution:

J'exécute Python 2.7 sur Linux Mint et lorsque j'appelle Image.show(), rien ne se passe. Sur mon système, le visualiseur par défaut est "Image Viewer", appelé "eog" dans bash. Mon Python pense que j'utilise quelque chose d'autre peut-être "xv". Alors, ouvrez un terminal et lancez

Sudo gedit /usr/lib/python2.7/dist-packages/PIL/ImageShow.py

Recherchez "xv" et remplacez-le par "eog".

Enregistrez le fichier et Image.show() fonctionne correctement (à des fins de débogage).

4
NoJoshua

J'espère que ce que j'ai trouvé ici peut être utile à quelqu'un, cela a fonctionné pour moi. Il explique que lorsque le visualiseur par défaut n’accepte pas les fichiers d’image de ligne de commande, vous pouvez utiliser le module de navigateur Web pour afficher l’image:

import Image

# Apple = Image.open("Apple.jpg")    
# Apple.show()
# instead of using .open and .show(), 
# save the image to show it with the webbrowser module

filename = "Apple.jpg"
import webbrowser
webbrowser.open(filename)
3
Cris C

Ce qui a fonctionné pour moi a été:

brew install imagemagick
1
TfromNYC

Il se peut que vous n'ayez pas défini de visionneuse d'images par défaut. Essayez d’ouvrir le fichier image en dehors du programme et voyez s’il vous est demandé de sélectionner un programme ou s’ouvre simplement dans un autre programme.

0
Evo510

Dans mon cas, j'utilise Ubuntu sous Windows et je ne peux pas afficher d’image avec Pillow.

Il y a deux choses que nous devons faire:

  1. Installez un serveur X sur votre Windows, par exemple, xming
  2. Installez un visualiseur d'images dans Ubuntu sous Windows (pas sous Windows, c'est important!), Par exemple, imagemagick , comme suggéré par @Lennart Regebro.

Ajoutez ensuite le paramètre suivant à votre .bashrc et sourcez-le:

export DISPLAY=:0

Maintenant, vous devriez pouvoir voir l'image affichée avec succès.

0
jdhao