python 加载线上图片

版权声明:本文为博主原创文章,未经博主允许不得转载。 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
如果哪里有什么不对或者不足的地方,还望读者多多提意见或建议
如需转载请联系我,经过授权方可转载,谢谢


欢迎关注公众号「网罗开发」

image

猜你喜欢

转载自blog.csdn.net/qq_36478920/article/details/90202955
今日推荐