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?
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.
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"
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()
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')
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 .
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é.
É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')
Pourquoi ne pas simplement l'afficher dans le navigateur Web de l'utilisateur?
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.
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.
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
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"))