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


Posted in Python onApril 24, 2015

本文实例讲述了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 相关文章推荐
Python程序设计入门(4)模块和包
Jun 16 Python
python根据出生年份简单计算生肖的方法
Mar 27 Python
Python的Flask框架中@app.route的用法教程
Mar 31 Python
python实现读取命令行参数的方法
May 22 Python
pyqt实现.ui文件批量转换为对应.py文件脚本
Jun 19 Python
Python爬虫动态ip代理防止被封的方法
Jul 07 Python
50行Python代码获取高考志愿信息的实现方法
Jul 23 Python
django数据模型(Model)的字段类型解析
Dec 25 Python
python模拟预测一下新型冠状病毒肺炎的数据
Feb 01 Python
Python发起请求提示UnicodeEncodeError错误代码解决方法
Apr 21 Python
Python文件名匹配与文件复制的实现
Dec 11 Python
python读取图片颜色值并生成excel像素画的方法实例
Feb 19 Python
python使用Tkinter显示网络图片的方法
Apr 24 #Python
Python中最常用的操作列表的几种方法归纳
Apr 24 #Python
在Python中使用lambda高效操作列表的教程
Apr 24 #Python
使用Python的判断语句模拟三目运算
Apr 24 #Python
Python的字典和列表的使用中一些需要注意的地方
Apr 24 #Python
整理Python最基本的操作字典的方法
Apr 24 #Python
编写Python脚本使得web页面上的代码高亮显示
Apr 24 #Python
You might like
PHP环境搭建最新方法
2006/09/05 PHP
综合图片计数器
2006/10/09 PHP
用Flash图形化数据(一)
2006/10/09 PHP
php email邮箱正则
2008/10/08 PHP
php 分页类 扩展代码
2009/06/11 PHP
有关PHP性能优化的介绍
2013/06/20 PHP
php文件读取方法实例分析
2015/06/20 PHP
PHP自定义函数格式化json数据示例
2016/09/14 PHP
利用switch语句进行多选一判断的实例代码
2016/11/14 PHP
php 中的closure用法详解
2017/06/12 PHP
Firefox div高度自适应
2009/04/28 Javascript
自定义一个jquery插件[鼠标悬浮时候 出现说明label]
2011/06/27 Javascript
Javascript中自动切换焦点实现代码
2012/12/15 Javascript
详解Javascript动态操作CSS
2014/12/08 Javascript
JavaScript中的方法重载实例
2015/03/16 Javascript
Knockoutjs 学习系列(二)花式捆绑
2016/06/07 Javascript
AngularJS监听路由的变化示例代码
2016/09/23 Javascript
JS轮播图中缓动函数的封装
2020/11/25 Javascript
记一次webpack3升级webpack4的踩坑经历
2018/06/12 Javascript
vue select选择框数据变化监听方法
2018/08/24 Javascript
JavaScript动态创建二维数组的方法示例
2019/02/01 Javascript
微信小程序textarea层级过高的解决方法
2019/03/04 Javascript
layui form表单提交之后重新加载数据表格的方法
2019/09/11 Javascript
[05:16]《大圣!大圣》——DOTA2新英雄齐天大圣配音李世宏老师专访
2016/12/13 DOTA
详解在Python程序中使用Cookie的教程
2015/04/30 Python
python多线程案例之多任务copy文件完整实例
2019/10/29 Python
Django跨域资源共享问题(推荐)
2020/03/09 Python
Python自动化测试中yaml文件读取操作
2020/08/20 Python
毕业学生推荐信
2013/12/01 职场文书
中专生求职自荐信范文
2013/12/22 职场文书
测控技术与通信工程毕业生自荐信范文
2013/12/28 职场文书
十八大感想感言
2014/02/10 职场文书
2014党员批评和自我批评思想汇报
2014/09/21 职场文书
出生公证书
2015/01/23 职场文书
房产公证书样本
2015/01/23 职场文书
2015年公司工作总结
2015/04/25 职场文书