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的Tornado框架中session支持的实现代码
Aug 21 Python
基于python实现在excel中读取与生成随机数写入excel中
Jan 04 Python
Python 网络爬虫--关于简单的模拟登录实例讲解
Jun 01 Python
详解Django中六个常用的自定义装饰器
Jul 04 Python
python 堆和优先队列的使用详解
Mar 05 Python
安装docker-compose的两种最简方法
Jul 30 Python
Python通过Pillow实现图片对比
Apr 29 Python
django queryset相加和筛选教程
May 18 Python
python中前缀运算符 *和 **的用法示例详解
May 28 Python
Python定义一个函数的方法
Jun 15 Python
opencv 阈值分割的具体使用
Jul 08 Python
python 爬虫基本使用——统计杭电oj题目正确率并排序
Oct 26 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实现在服务器端调整图片大小的方法
2015/06/16 PHP
PHP防盗链的基本思想 防盗链的设置方法
2015/09/25 PHP
PHP抓取远程图片(含不带后缀的)教程详解
2016/10/21 PHP
Nginx下ThinkPHP5的配置方法详解
2017/08/01 PHP
调试php程序的简单步骤
2019/10/04 PHP
firefox插件Firebug的使用教程
2010/01/02 Javascript
Jquery中显示隐藏的实现代码分析
2011/07/26 Javascript
关于scrollLeft,scrollTop的浏览器兼容性测试
2013/03/19 Javascript
js弹出层包含flash 不能关闭隐藏的2种处理方法
2013/06/17 Javascript
jQuery Mobile的loading对话框显示/隐藏方法分享
2013/11/26 Javascript
jQuery的$.proxy()应用示例介绍
2014/04/03 Javascript
form.submit()不能提交表单的错误原因及解决方法
2014/10/13 Javascript
JavaScript对表格或元素按文本,数字或日期排序的方法
2015/05/26 Javascript
Javascript之Number对象介绍
2016/06/07 Javascript
Bootstrap零基础入门教程(二)
2016/07/18 Javascript
Node.js 如何利用异步提升任务处理速度
2019/01/07 Javascript
小程序选项卡以及swiper套用(跨页面)
2020/06/19 Javascript
解决父组件将子组件作为弹窗调用只执行一次created的问题
2020/07/24 Javascript
javascript实现固定侧边栏
2021/02/09 Javascript
[01:29:31]VP VS VG Supermajor小组赛胜者组第二轮 BO3第一场 6.2
2018/06/03 DOTA
分享Python字符串关键点
2015/12/13 Python
django从请求到响应的过程深入讲解
2018/08/01 Python
Django框架实现分页显示内容的方法详解
2019/05/10 Python
pyqt5实现绘制ui,列表窗口,滚动窗口显示图片的方法
2019/06/20 Python
python 常用日期处理-- datetime 模块的使用
2020/09/02 Python
如何利用python生成MD5并去重
2020/12/07 Python
python中time包实例详解
2021/02/02 Python
洲际酒店集团大中华区:IHG中国
2016/08/17 全球购物
松下电器美国官方商店:Panasonic美国
2016/10/14 全球购物
美国时尚大码女装购物网站:Avenue
2019/05/24 全球购物
项目副经理岗位职责
2013/12/30 职场文书
优秀大学生自荐信
2014/06/09 职场文书
婚礼答谢词
2015/01/04 职场文书
自主招生推荐信格式模板
2015/03/24 职场文书
2015团员个人年度总结
2015/11/24 职场文书
JavaWeb 入门:Hello Servlet
2021/07/16 Java/Android