python使用PIL縮放網(wǎng)絡圖片并保存的方法
來源:易賢網(wǎng) 閱讀:2322 次 日期:2015-04-28 11:42:43
溫馨提示:易賢網(wǎng)小編為您整理了“python使用PIL縮放網(wǎng)絡圖片并保存的方法”,方便廣大網(wǎng)友查閱!

python使用PIL縮放網(wǎng)絡圖片并保存的方法

本文實例講述了python使用PIL縮放網(wǎng)絡圖片并保存的方法。分享給大家供大家參考。具體實現(xiàn)方法如下:

''' 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 = ""

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程序設計有所幫助。

更多信息請查看IT技術專欄

更多信息請查看網(wǎng)絡編程
易賢網(wǎng)手機網(wǎng)站地址:python使用PIL縮放網(wǎng)絡圖片并保存的方法

2025國考·省考課程試聽報名

  • 報班類型
  • 姓名
  • 手機號
  • 驗證碼
關于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網(wǎng)安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關注公眾號:hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權所有:易賢網(wǎng)