Cum să afișați imaginile PIL pe ecran? (Programare, Python, Imagine, Bibliotecă De Imagistică Python)

Bartlomiej Lewandowski a intrebat.

Fac o editare de imagini cu librăria PIL. Ideea este că nu vreau să salvez imaginea de fiecare dată pe HDD pentru a o vizualiza în Explorer. Există vreun mic modul care să-mi permită pur și simplu să configurez o fereastră și să afișez imaginea?

Comentarii

  • Afișarea imaginii cum? Într-un browser ? – user554546
  • într-o fereastră făcută în python. Ceva de genul unei ferestre din pygame. Aș putea să o fac în pygame, dar aș vrea o soluție mai bună. –  > Por Bartlomiej Lewandowski.
  • de ce nu vrei să o salvezi? –  > Por Joran Beasley.
  • să spunem că am 100 de poze mici pe care să le examinez. Ar fi mai bine dacă le-aș putea imprima pe toate pe ecran, fără a fi nevoit să le deschid într-un alt program. Nu sunt foarte familiarizat cu wxpython. Este simplu? –  > Por Bartlomiej Lewandowski.
  • Veți avea nevoie de o bibliotecă de ferestre – fie că este vorba de pygame, wxPython, wxPython, TkInter, PyQt, PyGtk, PyWin32, PyObjC etc. – pentru a deschide o fereastră. Odată ce ați deschis o fereastră, cele mai multe dintre ele fac trivială afișarea unei imagini în acea fereastră. –  > Por abarnert.
5 răspunsuri
martineau

De aproape de începutul Tutorial PIL:

Odată ce aveți o instanță a fișierului Imagine puteți utiliza metodele definite de această clasă pentru a procesa și manipula imaginea. De exemplu, să afișăm imaginea pe care tocmai am încărcat-o:

     >>> im.show()

Update:

În zilele noastreImage.show() metoda este documentată în mod oficial în documentul Pillow fork al PIL împreună cu o explicație a modului în care este implementată pe diferite sisteme de operare.

Comentarii

  • este de fapt ceea ce căutam, dar primesc o eroare de windows live photo gallery. 0x800706ba –  > Por Bartlomiej Lewandowski.
  • Acest lucru se datorează faptului că Windows live photo gallery este asociat cu tipul de fișier temporar creat de PIL atunci când ați apelat metoda – care probabil este implicit .bmp pe Windows, care nu acceptă multe dintre capacitățile formatelor moderne de fișiere de imagine. Încercați să setați atributul formatului de imagine în mod explicit la .png (adică im.format = "PNG") înainte de metoda im.show() apelului. –  > Por martineau.
  • în continuare problema persistă. S-ar putea să încerc de fapt o bibliotecă de ferestre. –  > Por Bartlomiej Lewandowski.
  • PIL este încorporat show() este cea mai simplă versiune posibilă a metodei „scriptul unui alt program pentru a o afișa”. (Pe sistemele Windows anterioare, ați fi ajuns să aveți o grămadă de ferestre MSPaint). A meritat să fie sugerată și încercată chiar dacă nu a funcționat. De fapt, ați putea face ceva similar și aproape la fel de simplu, de exemplu, lansând explicit MSPaint.exe pe fiecare imagine… –  > Por abarnert.
  • @abarnert: De fapt, problema sună ca o eroare în Windows Live Photo Gallery 2011 și există o versiune mai nouă care poate fi descărcați care ar putea rezolva problema PIL show() problemă. –  > Por martineau.
Harvey

Am testat acest lucru și funcționează bine pentru mine:

from PIL import Image
im = Image.open('image.jpg')
im.show()

Comentarii

  • În timp ce acest lucru poate răspunde la întrebare (netestat), este cea mai bună practică să oferiți o explicație cu codul dvs. pe SO. De fapt, este descurajat să oferiți răspunsuri numai cu cod. –  > Por d_kennetz.
  • Acest lucru nu pare să funcționeze pe Google colab notebook. –  > Por kawingkelvin.
  • @kawingkelvin Întrebarea a fost „Cum să afișați imaginile PIL pe ecran?”. Ar trebui să căutați răspunsul pentru situația dvs. specifică în altă parte… poate aici: stackoverflow.com/questions/55288657/… -…  > Por Harvey.
Feather Feet

Dacă observați că PIL are probleme pe anumite platforme, utilizarea unui vizualizator de imagini nativ poate fi de ajutor.

img.save("tmp.png") #Save the image to a PNG file called tmp.png.

Pentru MacOS:

import os
os.system("open tmp.png") #Will open in Preview.

Pentru majoritatea sistemelor GNU/Linux cu X.Org și un mediu desktop:

import os
os.system("xdg-open tmp.png")

Pentru Windows:

import os
os.system("powershell -c tmp.png")

Comentarii

  • Feather, pe MacOS, nu se va deschide neapărat în Preview, ci în cea implicită pentru tipul de fișier. Lucram cu niște fișiere jpg de mari dimensiuni, pe care Preview le convertește în .png, ceea ce durează aproximativ 20 de secunde. Schimbarea implicitului jpg în Chrome a făcut minuni… -.  > Por John White.
Puckl

Poate că poți folosi matplotlib pentru asta, poți reprezenta grafic imagini normale și cu el. Dacă apelați show(), imaginea apare într-o fereastră. Aruncați o privire la asta:

http://matplotlib.org/users/image_tutorial.html

Apostolos

Poți afișa o imagine în propria fereastră folosind Tkinter, fără a depinde de vizualizatoarele de imagini instalate în sistem:

import Tkinter as tk
from PIL import Image, ImageTk  # Place this at the end (to avoid any conflicts/errors)

window = tk.Tk()
#window.geometry("500x500") # (optional)    
imagefile = {path_to_your_image_file}
img = ImageTk.PhotoImage(Image.open(imagefile))
lbl = tk.Label(window, image = img).pack()
window.mainloop()

Pentru Python 3, înlocuiți import Tkinter as tk cu import tkinter as tk.

Comentarii

  • Unde ai văzut că codul presupune salvarea imaginii pe disc???? Întrebarea solicită o modalitate de a edita o imagine fără a fi nevoie să o salvați pe disc de fiecare dată. Dar trebuie să deschideți imaginea de pe disc cel puțin o dată la început. Apoi puteți procesa și vizualiza imaginea încărcată în memorie ca „img” de câte ori doriți fără a implica vreo operațiune pe disc. –  > Por Apostolos.