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实现简单状态框架的方法
Mar 19 Python
python利用正则表达式提取字符串
Dec 08 Python
Python 实现数据库更新脚本的生成方法
Jul 09 Python
python实现超市扫码仪计费
May 30 Python
python opencv摄像头的简单应用
Jun 06 Python
python sklearn库实现简单逻辑回归的实例代码
Jul 01 Python
Python SELENIUM上传文件或图片实现过程
Oct 28 Python
python循环嵌套的多种使用方法解析
Nov 29 Python
python GUI库图形界面开发之PyQt5图片显示控件QPixmap详细使用方法与实例
Feb 27 Python
OpenCV+python实现实时目标检测功能
Jun 24 Python
记一次python 爬虫爬取深圳租房信息的过程及遇到的问题
Nov 24 Python
Python 打印自己设计的字体的实例讲解
Jan 04 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 strnatcmp()函数的用法总结
2013/11/27 PHP
WebQQ最新登陆协议的用法
2014/12/22 PHP
Laravel手动分页实现方法详解
2016/10/09 PHP
PHP的PDO大对象(LOBs)
2019/01/27 PHP
推荐自用 Javascript 缩图函数 (onDOMLoaded)……
2007/10/23 Javascript
JS解密入门之凭直觉解
2008/06/25 Javascript
JavaScript 原型继承
2011/12/26 Javascript
基于jquery编写的横向自适应幻灯片切换特效的实例代码
2013/08/06 Javascript
JS弹出层单纯的绝对定位居中示例代码
2014/02/18 Javascript
javascript判断css3动画结束 css3动画结束的回调函数
2015/03/10 Javascript
原生js实现数字字母混合验证码的简单实例
2015/12/10 Javascript
Vue.js常用指令之循环使用v-for指令教程
2017/06/27 Javascript
javascript 中模板方法单例的实现方法
2017/10/17 Javascript
详解JavaScript中的函数、对象
2019/04/01 Javascript
NodeJS配置CORS实现过程详解
2020/12/02 NodeJs
[55:25]2018DOTA2亚洲邀请赛3月29日 小组赛A组 VG VS OG
2018/03/30 DOTA
python两种遍历字典(dict)的方法比较
2014/05/29 Python
Python处理JSON时的值报错及编码报错的两则解决实录
2016/06/26 Python
python获取酷狗音乐top500的下载地址 MP3格式
2018/04/17 Python
Python实现输出某区间范围内全部素数的方法
2018/05/02 Python
Flask框架配置与调试操作示例
2018/07/23 Python
Python实现将多个空格换为一个空格.md的方法
2018/12/20 Python
python 遍历列表提取下标和值的实例
2018/12/25 Python
bluepy 一款python封装的BLE利器简单介绍
2019/06/25 Python
Python如何输出警告信息
2020/07/30 Python
Python APScheduler执行使用方法详解
2020/12/10 Python
利用HTML5 Canvas制作一个简单的打飞机游戏
2015/05/11 HTML / CSS
德国最大的婴儿用品网上商店:Kidsroom.de(支持中文)
2020/09/02 全球购物
艺术应用与设计专业个人的自我评价
2013/11/19 职场文书
应用艺术毕业生的自我评价
2013/12/04 职场文书
三严三实学习心得体会
2014/10/13 职场文书
个人合伙协议书范本
2014/10/14 职场文书
党员民主评议总结
2014/10/20 职场文书
单位委托函范文
2015/01/29 职场文书
Python如何把不同类型数据的json序列化
2021/04/30 Python
Win11局域网共享权限在哪里设置? Win11高级共享的设置技巧
2022/04/05 数码科技