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脚本生成Android SALT扰码的方法
Sep 18 Python
Python实现读取文件最后n行的方法
Feb 23 Python
Python如何抓取天猫商品详细信息及交易记录
Feb 23 Python
Django开发的简易留言板案例详解
Dec 04 Python
实例讲解Python中浮点型的基本内容
Feb 11 Python
python爬虫 批量下载zabbix文档代码实例
Aug 21 Python
Pytorch通过保存为ONNX模型转TensorRT5的实现
May 25 Python
Pycharm2020.1安装无法启动问题即设置中文插件的方法
Aug 07 Python
基于python实现坦克大战游戏
Oct 27 Python
pandas按照列的值排序(某一列或者多列)
Dec 13 Python
python 自动识别并连接串口的实现
Jan 19 Python
Python使用psutil库对系统数据进行采集监控的方法
Aug 23 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
Smarty日期时间操作方法示例
2016/11/15 PHP
yii2中LinkPager增加总页数和总记录数的实例
2017/08/28 PHP
PHP连接MySQL数据库三种实现方法
2020/12/10 PHP
JSQL SQLProxy 的 php 版本代码
2010/05/05 Javascript
JavaScript实现大数的运算
2014/11/24 Javascript
javascript先序遍历DOM树的方法
2016/02/27 Javascript
Javascript之String对象详解
2016/06/08 Javascript
jQuery实现点击行选中或取消CheckBox的方法
2016/08/01 Javascript
javascript 四十条常用技巧大全
2016/09/09 Javascript
js设置文字颜色的方法示例
2016/12/30 Javascript
深入理解vue路由的使用
2017/03/24 Javascript
ES6新特性之解构、参数、模块和记号用法示例
2017/04/01 Javascript
Vue.js简易安装和快速入门(第二课)
2017/10/17 Javascript
webpack实用小功能介绍
2018/01/02 Javascript
Vue入门之数量加减运算操作示例
2018/12/11 Javascript
jQuery层叠选择器用法实例分析
2019/06/28 jQuery
flexible.js实现移动端rem适配方案
2020/04/07 Javascript
[39:21]LGD vs OG 2019国际邀请赛淘汰赛 胜者组 BO3 第二场 8.24
2019/09/10 DOTA
python代码检查工具pylint 让你的python更规范
2012/09/05 Python
python基础教程之字典操作详解
2014/03/25 Python
在PyCharm下打包*.py程序成.exe的方法
2018/11/29 Python
python-tkinter之按钮的使用,开关方法
2019/06/11 Python
手摸手教你用canvas实现给图片添加平铺水印的实现
2019/08/20 HTML / CSS
美国豪华的多品牌精品店:The Webster
2019/07/31 全球购物
三维科技面试题
2013/07/27 面试题
《恐龙》教学反思
2014/04/27 职场文书
公司募捐倡议书
2014/05/14 职场文书
煤矿安全知识竞赛活动总结
2014/07/07 职场文书
人身损害赔偿协议书范本
2014/09/27 职场文书
置业顾问岗位职责
2015/02/09 职场文书
创业计划书之溜冰场
2019/10/25 职场文书
前端学习——JavaScript原生实现购物车案例
2021/03/31 Javascript
MySQL基础(一)
2021/04/05 MySQL
vue中控制mock在开发环境使用,在生产环境禁用方式
2022/04/06 Vue.js
Java 关于String字符串原理上的问题
2022/04/07 Java/Android
多台电脑共享文件怎么设置?多台电脑共享文件操作教程
2022/04/08 数码科技