De snelste manier om een ​​voorbeeld van een PIL-afbeelding te bekijken

Ik werk nu met PIL-afbeeldingen in Python. Wat is de snelste manier om een ​​PIL-afbeelding in de Python-shell te bekijken? Opslaan naar een bestand en vervolgens openen in mijn besturingssysteem is behoorlijk omslachtig.

7
@Serdalis: Zoals Michael Aaron Safyan hieronder liet zien, is het inderdaad mogelijk :)
toegevoegd de auteur Ram Rachum, de bron
je zou het in een browser kunnen openen en op F5 drukken elke keer dat je een wijziging aanbrengt. Ik denk niet dat het mogelijk is in python shell zonder een GUI voor je programma.
toegevoegd de auteur Serdalis, de bron
zeker! dat maakt mijn leven ook gemakkelijker: D goede vraag +1
toegevoegd de auteur Serdalis, de bron

3 antwoord

Na installatie van iPython en PyQT , u kunt PIL-afbeeldingen inline weergeven in ipython qtconsole na het uitvoeren van de volgende code:

# display_pil.py
# source: http://mail.scipy.org/pipermail/ipython-user/2012-March/009706.html
# by 'MinRK'
import Image
from IPython.core import display
from io import BytesIO

def display_pil_image(im):
    """displayhook function for PIL Images, rendered as PNG"""
    b = BytesIO()
    im.save(b, format='png')
    data = b.getvalue()

    ip_img = display.Image(data=data, format='png', embed=True)
    return ip_img._repr_png_()

# register display func with PNG formatter:
png_formatter = get_ipython().display_formatter.formatters['image/png']
png_formatter.for_type(Image.Image, display_pil_image)

Voorbeeld van gebruik:

import Image
import display_pil
im = Image.open('test.png')
im

ipython qtconsole will display the loaded image inline.

3
toegevoegd
+1 Dit werkt ook voor Ipython-notebooks, een goede manier om REPL-experimenten met afbeeldingen te documenteren.
toegevoegd de auteur Paulo Scardine, de bron

Ik zou aanraden om iPython te gebruiken in plaats van de vanilla python-interpreter. Vervolgens kunt u de functie matplotlib.pyplot.imshow gemakkelijk gebruiken en met de Qt-console kunt u zelfs de afbeeldingen inline inline in de interpreter krijgen.

enter image description here

2
toegevoegd

De klasse Afbeelding heeft een show (zelf, title = Geen, opdracht = Geen) methode die u kunt gebruiken.

2
toegevoegd
Ik heb geconstateerd dat show() niet werkt in Windows 7, maar er is een fout opgetreden.
toegevoegd de auteur Mark Ransom, de bron