Affichage d'une image depuis la console en Python

Quelle est la meilleure façon de montrer une image .jpg ou .gif de la console Python?

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

24
demandé sur Alex 2009-09-12 02:22:50

9 réponses

à l'Aide du génial Oreiller de la bibliothèque:

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

ceci ouvrira l'image dans votre visualiseur d'image par défaut.

42
répondu Steven Kryskalla 2015-02-15 00:56:18

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

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

8
répondu Janus Troelsen 2017-05-23 12:18:17

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

7
répondu anthony 2009-09-11 22:36:26

vous ne pouvez pas afficher des images dans une fenêtre de console. Vous avez besoin d'une boîte à outils graphique comme Tkinter, PyGTK, PyQt, PyKDE, wxPython, PyObjC ou PyFLTK. Il y a beaucoup de tutoriel sur la façon de créer des fenêtres siomple et de charger des images iun python.

6
répondu codymanix 2009-09-11 22:31:58

Dans une nouvelle fenêtre à l'aide d'Oreiller/PIL

installer oreiller (ou PIL), p.ex.:

$ pip install pillow

Maintenant vous pouvez

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

à l'Aide des applications natives

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

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

Inline console Linux

si vous voulez vraiment montrer le image en ligne dans la console et non comme une nouvelle fenêtre, vous pouvez le faire, mais seulement dans une console Linux en utilisant fbi voir demandez Ubuntu ou bien utiliser ASCII-art comme CACA .

6
répondu Wernight 2016-05-30 08:27:31

ou simplement exécuter l'image à travers le shell, comme dans

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

et tout programme installé pour traiter les images sera lancé.

5
répondu Jochen Ritzel 2009-09-11 22:53:41

comme vous utilisez probablement Windows (à partir de la lecture de vos balises), ce serait la meilleure façon d'ouvrir et de montrer un fichier image à partir de la console sans installer des trucs supplémentaires comme PIL.

import os
os.system('start pic.png')
5
répondu Unknown 2009-09-11 23:21:46

j'ai fait un outil simple qui affichera une image donnée un nom de fichier ou objet d'image ou url .

C'est brut, mais il va faire dans la précipitation.

Installation:

 $ pip install simple-imshow

Utilisation:

from simshow import simshow
simshow('some_local_file.jpg')  # display from local file
simshow('http://mathandy.com/escher_sphere.png')  # display from url
2
répondu AndyP 2017-03-24 04:13:09

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

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
répondu Ivan Kvolik 2017-11-22 13:21:21