2017-10-24 4 views
0

Ich muss Bilder in einem tk-Fenster anzeigen, kann aber nur diese Funktionen verwenden;Python - Bild innerhalb Tkinter von URL öffnen - nicht PIL verwenden

from urllib.request import urlopen 
from re import findall, MULTILINE, DOTALL 
from webbrowser import open as webopen 
from os import getcwd 
from os.path import normpath 
from tkinter import * 
from sqlite3 import * 
from datetime import datetime 

Ich dachte, dass es vielleicht eine Möglichkeit sein, die ich diese tkinter Standardfunktionen tun können, nur durch, haben aber noch jede mögliche Art und Weise zu finden.

Dies oder ich könnte versuchen, einen Weg finden, um das Bild zu GIF konvertieren. Beachten Sie, dass keine Bilder auf dem System gespeichert werden können.

Die Bilder, die ich angezeigt werden müssen, sind entweder JPGs oder PNGs, wie this ein.

Jede Hilfe wird geschätzt.

Antwort

1

Wie here heißt:

Das Photobild Klasse GIF und PGM/PPM Bilder aus Dateien lesen kann:

photo = PhotoImage(file="image.gif") 

photo = PhotoImage(file="lenna.pgm") 

Das Photobild kann auch Base64-codierte GIF-Dateien von Strings lesen. Sie können dies in Python Bilder einbetten verwenden Quellcode (Verwendung Funktionen im base64-Modul Binärdaten Base64-codierten Zeichenfolge zu konvertieren):

Und wie wurde in den Kommentaren unten aufgezeigt und here Sie können auch verwenden PNG-Bilder mit PhotoImage.

Bilder in tkinter müssen als PhotoImage Objekte gezeichnet werden und um ein PhotoImage Objekt zu erhalten, muss das Bild eines der oben genannten Formate sein.

So müssen Sie einen Weg finden, die Bilder in einem dieser Formate mit den Modulen, die Sie zur Verfügung haben zu erhalten.

+0

Tk verwenden 8.6 bietet native Unterstützung für PNG-Bilder (siehe https: // tcl.tk/software/tcltk/8.6.html), so dass Sie sie mit PhotoImage ohne PIL lesen können. –

+1

Aktualisiert, um aufzunehmen –

0

Mit dem Tcl/Tk-Modul Img können Sie JPEG und PNG (neben anderen Formaten) mit PhotoImage laden. Dieses Modul ist in einigen gepackten Distributionen von Tcl/Tk enthalten. Es lohnt sich also zu prüfen, ob es auf dem Computer installiert ist, den Sie verwenden. Um dies zu tun, versuchen Sie es zu laden, mit:

widget.tk.eval('package require Img')

widget kann jedes Tkinter-Widget sein.

Wenn es eine Versionsnummer zurückgibt, dann ist es installiert und geladen, so dass Sie es und öffnen JPEG-Bilder einfach tun

PhotoImage(file='/my/image.jpg')