2015-07-31 8 views
11

Ich habe eine Python-Datei mit der Pillow-Bibliothek importiert. Ich kann ein Bild mitWie schließe ich ein in Pillow geöffnetes Bild?

öffnen
Image.open(test.png) 

Aber wie schließe ich das Bild? Ich benutze Pillow nicht, um das Bild zu bearbeiten, nur um das Bild anzuzeigen und dem Benutzer zu erlauben, es zu speichern oder zu löschen.

Antwort

25

Mit Image.close().

Sie können auch in ein tun es mit Block:

with Image.open('test.png') as test_image: 
    do_things(test_image) 

Ein Beispiel für die Verwendung Image.close():

test = Image.open('test.png') 
test.close() 
+0

Ich verwende immer die zweite Option. Kontextmanager sind wirklich nett. – Brobin

+0

@Brobin Oh ja, mit Blöcken ist der Weg zu gehen. Und auch eines der Dinge, die ich am meisten vermisse, wenn ich eine andere Sprache benutzen muss. –

+0

Mit "mit" bekomme ich einen "AttributeError: __exit__" Fehler mit PIL 1.1.7, welche Version benutzt du? – Chris

0

Wenn Sie ein PIL-Objekt erstellen, werden Sie dort sehen ist keine enge Methode.

from PIL import Image 

img=Image.open("image.jpg") 
dir(img) 

['_Image__transformer', '_PngImageFile__idat', '__doc__', '__getattr__', '__init__', '__module__', '__repr__', '_copy', '_dump', '_expand', '_makeself', '_new', '_open', 'category', 'convert', 'copy', 'crop', 'decoderconfig', 'decodermaxblock', 'draft', 'filename', 'filter', 'format', 'format_description', 'fp', 'frombytes', 'fromstring', 'getbands', 'getbbox', 'getcolors', 'getdata', 'getextrema', 'getim', 'getpalette', 'getpixel', 'getprojection', 'histogram', 'im', 'info', 'load', 'load_end', 'load_prepare', 'load_read', 'map', 'mode', 'offset', 'palette', 'paste', 'png', 'point', 'putalpha', 'putdata', 'putpalette', 'putpixel', 'quantize', 'readonly', 'resize', 'rotate', 'save', 'seek', 'show', 'size', 'split', 'tell', 'text', 'thumbnail', 'tile', 'tobitmap', 'tobytes', 'tostring', 'transform', 'transpose', 'verify'] 
+0

Schauen Sie sich jedoch die [docs] (https://pillow.readthedocs.org/en/latest/reference/Image.html#PIL.Image.Image.close) an. Ich bin nicht sicher, warum es nicht im Verzeichnis des Objekts erscheint, aber es existiert definitiv. –

+2

Mein Pillow (Version 2.3.0) scheint auch die Close-Methode zu fehlen. –

+0

Ich benutze pkg_resources, um die Version zu überprüfen: >>> pkg_resources.get_distribution ('Pillow') Version '2.3.0' –