最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

python使用PIL缩放网络图片并保存的方法

来源:动视网 责编:小采 时间:2020-11-27 14:39:26
文档

python使用PIL缩放网络图片并保存的方法

python使用PIL缩放网络图片并保存的方法:本文实例讲述了python使用PIL缩放网络图片并保存的方法。分享给大家供大家参考。具体实现方法如下: ''' tk_image_view_url_io_resize.py display an image from a URL using Tkinter, PIL and data_stream also re
推荐度:
导读python使用PIL缩放网络图片并保存的方法:本文实例讲述了python使用PIL缩放网络图片并保存的方法。分享给大家供大家参考。具体实现方法如下: ''' tk_image_view_url_io_resize.py display an image from a URL using Tkinter, PIL and data_stream also re


本文实例讲述了python使用PIL缩放网络图片并保存的方法。分享给大家供大家参考。具体实现方法如下:

''' tk_image_view_url_io_resize.py
display an image from a URL using Tkinter, PIL and data_stream
also resize the web image to fit a certain size display widget
retaining its aspect ratio
Pil facilitates resizing and allows file formats other then gif
tested with Python27 and Python33 by vegaseat 18mar2013
'''
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):
 '''
 resize a pil_image object so it will fit into
 a box of size w_box times h_box, but retain aspect ratio
 '''
 f1 = 1.0*w_box/w # 1.0 forces float division in Python2
 f2 = 1.0*h_box/h
 factor = min([f1, f2])
 #print(f1, f2, factor) # test
 # use best down-sizing filter
 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 = 400
h_box = 350
# find yourself a picture on an internet web page you like
# (right click on the picture, under properties copy the address)
# a larger (1600 x 1200) picture from the internet
# url name is long, so split it
url1 = "http://freeflowerpictures.net/image/flowers/petunia/"
url2 = "petunia-flower.jpg"
url = url1 + url2
image_bytes = urlopen(url).read()
# internal data file
data_stream = io.BytesIO(image_bytes)
# open as a PIL image object
pil_image = Image.open(data_stream)
# get the size of the image
w, h = pil_image.size
# resize the image so it retains its aspect ration
# but fits into the specified display box
pil_image_resized = resize(w, h, w_box, h_box, pil_image)
# optionally show resized image info ...
# get the size of the resized image
wr, hr = pil_image_resized.size
# split off image file name
fname = url.split('/')[-1]
sf = "resized {} ({}x{})".format(fname, wr, hr)
root.title(sf)
# convert PIL image object to Tkinter PhotoImage object
tk_image = ImageTk.PhotoImage(pil_image_resized)
# put the image on a widget the size of the specified display box
label = tk.Label(root, image=tk_image, width=w_box, height=h_box)
label.pack(padx=5, pady=5)
root.mainloop()

希望本文所述对大家的Python程序设计有所帮助。

文档

python使用PIL缩放网络图片并保存的方法

python使用PIL缩放网络图片并保存的方法:本文实例讲述了python使用PIL缩放网络图片并保存的方法。分享给大家供大家参考。具体实现方法如下: ''' tk_image_view_url_io_resize.py display an image from a URL using Tkinter, PIL and data_stream also re
推荐度:
标签: 保存 缩放 python
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top