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对象的深拷贝和浅拷贝详解
Aug 25 Python
使用python编写简单的小程序编译成exe跑在win10上
Jan 15 Python
Python基于多线程操作数据库相关问题分析
Jul 11 Python
python调用百度语音识别api
Aug 30 Python
Python 给定的经纬度标注在地图上的实现方法
Jul 05 Python
Python算法中的时间复杂度问题
Nov 19 Python
django数据模型(Model)的字段类型解析
Dec 25 Python
浅谈pytorch、cuda、python的版本对齐问题
Jan 15 Python
什么是python的列表推导式
May 26 Python
给Django Admin添加验证码和多次登录尝试限制的实现
Jul 26 Python
Django vue前后端分离整合过程解析
Nov 20 Python
Python数据可视化之基于pyecharts实现的地理图表的绘制
Jun 10 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世纪万年历
2006/12/06 PHP
php检测iis环境是否支持htaccess的方法
2014/02/18 PHP
php封装好的人民币数值转中文大写类
2015/12/20 PHP
Symfony2中被遗弃的getRequest()方法分析
2016/03/17 PHP
php+js实现百度地图多点标注的方法
2016/11/30 PHP
php usort 使用用户自定义的比较函数对二维数组中的值进行排序
2017/05/02 PHP
PHP多维数组指定多字段排序的示例代码
2018/05/16 PHP
jQuery动画animate方法使用介绍
2013/05/06 Javascript
JQuery设置和去除disabled属性的5种方法总结
2013/05/16 Javascript
利用javascript打开模态对话框(示例代码)
2014/01/11 Javascript
jquery trigger伪造a标签的click事件取代window.open方法
2014/06/23 Javascript
jQuery中scrollLeft()方法用法实例
2015/01/16 Javascript
JavaScript中的getTime()方法使用详解
2015/06/10 Javascript
js实现简单折叠、展开菜单的方法
2015/08/28 Javascript
Vue2.0表单校验组件vee-validate的使用详解
2017/05/02 Javascript
原生JS实现图片懒加载(lazyload)实例
2017/06/13 Javascript
js Date()日期函数浏览器兼容问题解决方法
2017/09/12 Javascript
解决Can't find variable: SockJS vue项目的问题
2020/09/22 Javascript
[39:53]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第一场 11.19
2020/11/19 DOTA
Python列表(list)常用操作方法小结
2015/02/02 Python
在Linux系统上安装Python的Scrapy框架的教程
2015/06/11 Python
Python字符串匹配算法KMP实例
2015/07/18 Python
纯CSS实现设置半个字符的样式
2014/07/03 HTML / CSS
html5实现微信打飞机游戏
2014/03/27 HTML / CSS
详解移动端html5页面长按实现高亮全选文本内容的兼容解决方案
2016/12/03 HTML / CSS
体验完美剃须:The Art of Shaving
2018/08/06 全球购物
飞利浦法国官网:Philips法国
2019/07/10 全球购物
Craghoppers德国官网:户外和旅行服装
2020/02/14 全球购物
师范生自荐信
2013/10/27 职场文书
办公室文书岗位职责
2013/12/16 职场文书
计算机专业求职信
2014/06/02 职场文书
2015新年寄语(一句话)
2014/12/08 职场文书
煤矿安全保证书
2015/02/27 职场文书
汽车销售员岗位职责
2015/04/11 职场文书
党支部综合考察意见
2015/06/01 职场文书
使用feign服务调用添加Header参数
2021/06/23 Java/Android