版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_36478920/article/details/90202955
python学习笔记,特做记录,分享给大家,希望对大家有所帮助。
此前分享的方法只适用于显示png格式的图片,这篇文章来分享一个加载线上图片的功能。
首先引入包
import io
from PIL import Image, ImageTk
显示图片代码:
try:
# Python2
import Tkinter as tk
from urllib2 import urlopen
except ImportError:
# Python3
import tkinter as tk
from urllib.request import urlopen
def resize(w, h, w_box, h_box, pil_image):
f1 = 1.0 * w_box / w # 1.0 forces float division in Python2
f2 = 1.0 * h_box / h
factor = min([f1, f2])
width = int(w * factor)
height = int(h * factor)
return pil_image.resize((width, height), Image.ANTIALIAS)
root = tk.Tk()
# size of image display box you want
# 期望图像显示的大小
w_box = 560
h_box = 160
url = "http://upload-images.jianshu.io/upload_images/2829694-71f7dbfc12708cb0.png"
image_bytes = urlopen(url).read()
data_stream = io.BytesIO(image_bytes)
# 以一个PIL图像对象打开
pil_image = Image.open(data_stream)
# 获取图像的原始大小
w, h = pil_image.size
# 缩放图像让它保持比例,同时限制在一个矩形框范围内
pil_image_resized = resize(w, h, w_box, h_box, pil_image)
# 也可以显示缩放后的图像信息,获取大小
wr, hr = pil_image_resized.size
# 标题栏显示:缩放后的图像文件名和大小
fname = url.split('/')[-1]
sf = "resized {} ({}x{})".format(fname, wr, hr)
root.title(sf)
# 把PIL图像对象转变为Tkinter的PhotoImage对象
tk_image = ImageTk.PhotoImage(pil_image_resized)
# Label: 这个小工具,就是个显示框,小窗口,把图像大小显示到指定的显示框
label = tk.Label(root, image=tk_image, width=w_box, height=h_box)
# padx,pady是图像与窗口边缘的距离
label.pack(padx=5, pady=5)
root.mainloop()
这样就可以显示图片了
运行效果:
欢迎关注公众号**「网罗开发」**,可领取python测试demo和学习资源,大家一起学python,网罗天下方法,方便你我开发。
希望可以帮助大家,如有问题可加QQ技术交流群: 668562416
如果哪里有什么不对或者不足的地方,还望读者多多提意见或建议
如需转载请联系我,经过授权方可转载,谢谢
欢迎关注公众号「网罗开发」