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实现从订阅源下载图片的方法
Mar 11 Python
Python 元类实例解析
Apr 04 Python
python3中zip()函数使用详解
Jun 29 Python
Python3.5基础之NumPy模块的使用图文与实例详解
Apr 24 Python
Django框架验证码用法实例分析
May 10 Python
Python+OpenCv制作证件图片生成器的操作方法
Aug 21 Python
使用python实现男神女神颜值打分系统(推荐)
Oct 31 Python
Django集成celery发送异步邮件实例
Dec 17 Python
linux系统下pip升级报错的解决方法
Jan 31 Python
Python用SSH连接到网络设备
Feb 18 Python
sklearn中的交叉验证的实现(Cross-Validation)
Feb 22 Python
浅谈python中的多态
Jun 15 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仿博客园 个人博客(2) 数据库增添改删
2013/07/05 PHP
Laravel框架学习笔记(二)项目实战之模型(Models)
2014/10/15 PHP
php检测文本的编码
2015/07/26 PHP
php封装的数据库函数与用法示例【参考thinkPHP】
2016/11/08 PHP
简明json介绍
2008/09/28 Javascript
jquery formValidator插件ajax验证 内容不做任何修改再离开提示错误的bug解决方法
2013/01/04 Javascript
解析img图片没找到onerror事件 Stack overflow at line: 0
2013/12/23 Javascript
获取select元素被选中的文本内容的js代码
2014/01/29 Javascript
ExtJS4如何给同一个formpanel不同的url
2014/05/02 Javascript
JavaScript中创建字典对象(dictionary)实例
2015/03/31 Javascript
基于jQuery实现简单的折叠菜单效果
2015/11/23 Javascript
javascript新闻跑马灯实例代码
2020/07/29 Javascript
浅谈js中的三种继承方式及其优缺点
2016/08/10 Javascript
原生js实现鼠标跟随效果
2017/02/28 Javascript
vue中的非父子间的通讯问题简单的实例代码
2017/07/19 Javascript
Django中使用jquery的ajax进行数据交互的实例代码
2017/10/15 jQuery
JS设计模式之命令模式概念与用法分析
2018/02/06 Javascript
详解vue-loader在项目中是如何配置的
2018/06/04 Javascript
vue组件命名和props命名代码详解
2019/09/01 Javascript
小程序如何定位所在城市及发起周边搜索
2020/02/11 Javascript
[01:36:19]Secret vs NB 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
用yum安装MySQLdb模块的步骤方法
2016/12/15 Python
ubuntu安装mysql pycharm sublime
2018/02/20 Python
对命令行模式与python交互模式介绍
2018/05/12 Python
Python合并多个Excel数据的方法
2018/07/16 Python
Python使用pymongo模块操作MongoDB的方法示例
2018/07/20 Python
Python使用itchat模块实现群聊转发,自动回复功能示例
2019/08/26 Python
浅谈numpy中np.array()与np.asarray的区别以及.tolist
2020/06/03 Python
Python爬虫scrapy框架Cookie池(微博Cookie池)的使用
2021/01/13 Python
GNC健安喜美国官网:美国第一营养品牌
2016/07/22 全球购物
企业法人授权委托书
2014/04/03 职场文书
2014年五四青年节演讲稿范文
2014/04/22 职场文书
大学学习计划书范文
2014/05/02 职场文书
殡葬服务心得体会
2014/09/11 职场文书
网站出售协议书范文
2014/10/10 职场文书
pytorch通过训练结果的复现设置随机种子
2021/06/01 Python