python生成指定尺寸缩略图的示例


Posted in Python onMay 07, 2014

python生成指定尺寸的缩略图

def MakeThumb(path, sizes=(75, 32, 16)):
    """
    缩略图生成程序 by Neil Chen
    sizes 参数传递要生成的尺寸,可以生成多种尺寸
    """
    base, ext = os.path.splitext(path)
    try:
        im = Image.open(path)
    except IOError:
        return
    mode = im.mode
    if mode not in ('L', 'RGB'):
        if mode == 'RGBA':
            # 透明图片需要加白色底
            alpha = im.split()[3]
            bgmask = alpha.point(lambda x: 255-x)
            im = im.convert('RGB')
            # paste(color, box, mask)
            im.paste((255,255,255), None, bgmask)
        else:
            im = im.convert('RGB')
    width, height = im.size
    if width == height:
        region = im
    else:
        if width > height:
            delta = (width - height)/2
            box = (delta, 0, delta+height, height)
        else:
            delta = (height - width)/2
            box = (0, delta, width, delta+width)
        region = im.crop(box)
    for size in sizes:
        filename = base + "_" + "%sx%s" % (str(size), str(size)) + ".jpg"
        thumb = region.resize((size,size), Image.ANTIALIAS)
        thumb.save(filename, quality=100) # 默认 JPEG 保存质量是 75, 不太清楚。可选值(0~100)
Python 相关文章推荐
python解析json实例方法
Nov 19 Python
Python正则表达式分组概念与用法详解
Jun 24 Python
Python基于回溯法子集树模板解决选排问题示例
Sep 07 Python
import的本质解析
Oct 30 Python
使用DataFrame删除行和列的实例讲解
Apr 08 Python
Flask Web开发入门之文件上传(八)
Aug 17 Python
python实现矩阵打印
Mar 02 Python
python使用Plotly绘图工具绘制水平条形图
Mar 25 Python
python next()和iter()函数原理解析
Feb 07 Python
django之从html页面表单获取输入的数据实例
Mar 16 Python
python 在右键菜单中加入复制目标文件的有效存放路径(单斜杠或者双反斜杠)
Apr 08 Python
python实现飞船游戏的纵向移动
Apr 24 Python
python读取浮点数和读取文本文件示例
May 06 #Python
python创建线程示例
May 06 #Python
Python Web服务器Tornado使用小结
May 06 #Python
Python SQLAlchemy基本操作和常用技巧(包含大量实例,非常好)
May 06 #Python
Python Web开发模板引擎优缺点总结
May 06 #Python
windows系统中python使用rar命令压缩多个文件夹示例
May 06 #Python
Python中使用动态变量名的方法
May 06 #Python
You might like
小文件php+SQLite存储方案
2010/09/04 PHP
PHP学习笔记之一
2011/01/17 PHP
php 5.3.5安装memcache注意事项小结
2011/04/12 PHP
php 调用ffmpeg获取视频信息的简单实现
2017/04/03 PHP
jQuery弹出层插件简化版代码下载
2008/10/16 Javascript
javascript与cookie 的问题详解
2013/11/11 Javascript
JavaScript解八皇后问题的方法总结
2016/06/12 Javascript
大型JavaScript应用程序架构设计模式
2016/06/29 Javascript
利用Bootstrap实现表格复选框checkbox全选
2016/12/21 Javascript
详解JavaScript中this的指向问题
2017/01/20 Javascript
新闻上下滚动jquery 超简洁(必看篇)
2017/01/21 Javascript
vue引入jq插件的实例讲解
2017/09/12 Javascript
详解angularjs popup-table 弹出框表格指令
2017/09/20 Javascript
bootstrap实现二级下拉菜单效果
2017/11/23 Javascript
小程序分享链接onShareAppMessage的具体用法
2020/05/22 Javascript
Vue elementui字体图标显示问题解决方案
2020/08/18 Javascript
vue el-upload上传文件的示例代码
2020/12/21 Vue.js
python为tornado添加recaptcha验证码功能
2014/02/26 Python
python实现读取并显示图片的两种方法
2017/01/13 Python
python实现简易通讯录修改版
2018/03/13 Python
python使用selenium登录QQ邮箱(附带滑动解锁)
2019/01/23 Python
python对绑定事件的鼠标、按键的判断实例
2019/07/17 Python
Python StringIO如何在内存中读写str
2020/01/07 Python
tensorflow 查看梯度方式
2020/02/04 Python
Python super()方法原理详解
2020/03/31 Python
利用纯CSS3实现tab选项卡切换示例代码
2016/09/21 HTML / CSS
个人银行贷款担保书
2014/04/01 职场文书
承诺书范文
2014/06/03 职场文书
企业人事任命书
2014/06/05 职场文书
学校食品安全实施方案
2014/06/14 职场文书
2014年入党积极分子党校培训心得体会
2014/07/08 职场文书
《全神贯注》教学反思
2016/02/22 职场文书
Nginx + consul + upsync 完成动态负载均衡的方法详解
2021/03/31 Servers
如何使用Python对NetCDF数据做空间相关分析
2021/04/21 Python
Javascript使用integrity属性进行安全验证
2021/11/07 Javascript
go goth封装第三方认证库示例详解
2022/08/14 Golang