图片变化无常,有的是空白,有的是空白

2024-06-16 18:13:23 发布

您现在位置:Python中文网/ 问答频道 /正文

注意:主要问题还没有解决,但代码在Windows PC上确实可以工作,问题与我正在使用的计算机有关。你知道吗

正如标题所示,在我的代码中,一个图像可以很好地工作,但是另一个图像不能正确显示。你知道吗

我觉得我忽略了一些非常明显的东西,不管怎样,这是我遇到麻烦的代码段。你知道吗

from Tkinter import *
from StringIO import StringIO
from PIL import Image,ImageTk
from urllib import urlopen


url1 = 'https://lh3.googleusercontent.com/-bnh6_0GlqbA/VUKUsl1Pp9I/AAAAAAACGoM/Vx9yu1QGIKQ/s650/Sunset.png'
url2 = 'https://lh3.googleusercontent.com/-_J57qf7Y9yI/VUPaEaMbp9I/AAAAAAACGuM/3f4551Kcd0I/s650/UpsideDawn.png'

window = Tk()

imagebytes = urlopen(url1).read()
imagedata = StringIO(imagebytes)
imagePIL = Image.open(imagedata)
imageready = ImageTk.PhotoImage(imagePIL)

imagelabel = Label(window, image = imageready)
imagelabel.image = imageready

imagelabel.pack()
window.mainloop()

如果要运行此代码,您会发现url1将显示一个空白窗口,而url2将显示图像。你知道吗


Tags: 代码fromhttps图像imageimportwindowurlopen
1条回答
网友
1楼 · 发布于 2024-06-16 18:13:23

下面的代码在python3中非常适合我,可以很好地显示任意一个图像。你知道吗

from tkinter import *
from PIL import Image,ImageTk
import urllib.request
import io

url1 = 'https://lh3.googleusercontent.com/-bnh6_0GlqbA/VUKUsl1Pp9I/AAAAAAACGoM/Vx9yu1QGIKQ/s650/Sunset.png'
url2 = 'https://lh3.googleusercontent.com/-_J57qf7Y9yI/VUPaEaMbp9I/AAAAAAACGuM/3f4551Kcd0I/s650/UpsideDawn.png'

window = Tk()

imagebytes = urllib.request.urlopen(url1).read()
imagedata = io.BytesIO(imagebytes)
imagePIL = Image.open(imagedata)
imageready = ImageTk.PhotoImage(imagePIL)

imagelabel = Label(window, image = imageready)
imagelabel.image = imageready

imagelabel.pack()
window.mainloop()

以下是我对上述Python2版本的最佳猜测:

from Tkinter import *
from PIL import Image,ImageTk
from urllib import urlopen
import io # try this

url1 = 'https://lh3.googleusercontent.com/-bnh6_0GlqbA/VUKUsl1Pp9I/AAAAAAACGoM/Vx9yu1QGIKQ/s650/Sunset.png'
url2 = 'https://lh3.googleusercontent.com/-_J57qf7Y9yI/VUPaEaMbp9I/AAAAAAACGuM/3f4551Kcd0I/s650/UpsideDawn.png'

window = Tk()

imagebytes = urlopen(url1).read()
imagedata = io.BytesIO(imagebytes) # use bytesio instead of stringio
imagePIL = Image.open(imagedata)
imageready = ImageTk.PhotoImage(imagePIL)

imagelabel = Label(window, image = imageready)
imagelabel.image = imageready

imagelabel.pack()
window.mainloop()

相关问题 更多 >