web-dev-qa-db-fra.com

Affichage d'une image de la console dans Python

Quelle est la manière la plus simple d'afficher un .jpg ou .gif image de Python console?

J'ai un programme de console Python qui vérifie un ensemble de données contenant des liens vers des images stockées localement. Comment dois-je écrire le script pour qu'il affiche des fenêtres graphiques contextuelles d'images?

30
Alex

Utilisation de la bibliothèque géniale Pillow :

>>> from PIL import Image                                                                                
>>> img = Image.open('test.png')
>>> img.show() 

Cela ouvrira l'image dans votre visionneuse d'images par défaut.

52
Steven Kryskalla

Dans les terminaux compatibles Xterm, vous pouvez afficher l'image directement dans le terminal. Voir ma réponse à "PPM image to ASCII art in Python"

ImageMagick's "logo:" image in Xterm (show picture in new tab for full size viewing)

8
Janus Troelsen

Dans une nouvelle fenêtre avec Pillow/PIL

Installer Oreiller (ou PIL), par exemple:

$ pip install pillow

Maintenant vous pouvez

from PIL import Image
with Image.open('path/to/file.jpg') as img:
    img.show()

Utiliser des applications natives

D'autres alternatives courantes incluent l'exécution de xdg-open ou lancer le navigateur avec le chemin de l'image:

import webbrowser
webbrowser.open('path/to/file.jpg')

Inline une console Linux

Si vous voulez vraiment afficher l'image en ligne dans la console et non comme une nouvelle fenêtre, vous pouvez le faire mais uniquement dans une console Linux en utilisant fbi voir demandez à Ubunt ou bien utilisez l'art ASCII comme CACA .

7
Wernight

Ou exécutez simplement l'image via le Shell, comme dans

import subprocess
subprocess.call([ fname ], Shell=True)

et quel que soit le programme installé pour gérer les images sera lancé.

6
Jochen Ritzel

Étant donné que vous exécutez probablement Windows (en regardant vos balises), ce serait le moyen le plus simple d'ouvrir et d'afficher un fichier image à partir de la console sans installer de choses supplémentaires comme PIL.

import os
os.system('start pic.png')
6
Unknown

Pourquoi ne pas simplement l'afficher dans le navigateur Web de l'utilisateur?

6
anthony

Vous ne pouvez pas afficher d'images dans une fenêtre de console. Vous avez besoin d'une boîte à outils graphique telle que Tkinter, PyGTK, PyQt, PyKDE, wxPython, PyObjC ou PyFLTK. Il y a beaucoup de tutoriels pour créer des fenêtres siomples et charger des images en python.

5
codymanix

Si vous souhaitez l'afficher dans une nouvelle fenêtre, vous pouvez utiliser la bibliothèque Tkinter + PIL, comme ceci:

import tkinter as tk
from PIL import ImageTk, Image

def show_imge(path):
    image_window = tk.Tk()
    img = ImageTk.PhotoImage(Image.open(path))
    panel = tk.Label(image_window, image=img)
    panel.pack(side="bottom", fill="both", expand="yes")
    image_window.mainloop()

Il s'agit d'un exemple modifié qui peut être trouvé partout sur le Web.

2
Ivan Kvolik

J'ai créé un outil simple qui affichera une image avec un nom de fichier ou objet image ou rl.
C'est grossier, mais ça ira vite.

Installation:

 $ pip install simple-imshow

Usage:

from simshow import simshow
simshow('some_local_file.jpg')  # display from local file
simshow('http://mathandy.com/escher_sphere.png')  # display from url
2
AndyP

Vous pouvez également utiliser le module Python Ipython, qui en plus d'afficher une image dans la console Spyder peut incorporer des images dans le bloc-notes Jupyter. Dans Spyder, l'image sera affichée dans pleine taille, non à l'échelle pour s'adapter à la console.

from IPython.display import Image, display
display(Image(filename="mypic.png"))
0
Sarah Grogan