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 正则表达式的高级用法
Dec 04 Python
使用anaconda的pip安装第三方python包的操作步骤
Jun 11 Python
Python设计模式之状态模式原理与用法详解
Jan 15 Python
python读写配置文件操作示例
Jul 03 Python
python-序列解包(对可迭代元素的快速取值方法)
Aug 24 Python
python json load json 数据后出现乱序的解决方案
Feb 27 Python
python的列表List求均值和中位数实例
Mar 03 Python
django 解决扩展自带User表遇到的问题
May 14 Python
tensorflow实现从.ckpt文件中读取任意变量
May 26 Python
python代码中怎么换行
Jun 17 Python
Python数据分析入门之数据读取与存储
May 13 Python
OpenCV-Python实现油画效果的实例
Jun 08 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
文章推荐系统(二)
2006/10/09 PHP
PHP实现生成唯一编号(36进制的不重复编号)
2014/07/01 PHP
php获取目录中所有文件名及判断文件与目录的简单方法
2017/03/04 PHP
浅谈Laravel中的三种中间件的作用
2019/10/13 PHP
Laravel框架处理用户的请求操作详解
2019/12/20 PHP
JavaScript的面向对象(一)
2006/11/09 Javascript
Javascript模块模式分析
2008/05/16 Javascript
javascript拓展DOM操作 prependChild insertAfert
2010/11/17 Javascript
js数组的操作详解
2013/03/27 Javascript
js点击按钮实现带遮罩层的弹出视频效果
2015/12/19 Javascript
一起学写js Calender日历控件
2016/04/14 Javascript
js实现图片淡入淡出切换简易效果
2016/08/22 Javascript
完美实现js焦点轮播效果(一)
2017/03/07 Javascript
JavaScript实现设置默认日期范围为最近40天的方法分析
2017/07/12 Javascript
JavaScript复制内容到剪贴板的两种常用方法
2018/02/27 Javascript
jQuery实现表单动态添加数据并提交的方法
2018/07/19 jQuery
Vue项目部署的实现(阿里云+Nginx代理+PM2)
2019/03/26 Javascript
解决微信小程序云开发中获取数据库的内容为空的方法
2019/05/15 Javascript
Vue将页面导出为图片或者PDF
2020/08/17 Javascript
JS正则表达式常见函数与用法小结
2020/04/13 Javascript
vue 通过绑定事件获取当前行的id操作
2020/07/27 Javascript
解决vue net :ERR_CONNECTION_REFUSED报错问题
2020/08/13 Javascript
jQuery实现动态向上滚动
2020/12/21 jQuery
python中range()与xrange()用法分析
2016/09/21 Python
CentOS6.5设置Django开发环境
2016/10/13 Python
Python利用flask sqlalchemy实现分页效果
2020/08/02 Python
Python实现Logger打印功能的方法详解
2017/09/01 Python
浅谈解除装饰器作用(python3新增)
2018/10/15 Python
关于Python3的import问题(pycharm可以运行命令行import错误)
2020/11/18 Python
纯css3制作煽动翅膀的蝴蝶的示例
2018/04/23 HTML / CSS
如何减少垃圾回收让内存更加有效使用
2013/10/18 面试题
大学生找工作求职信
2014/07/09 职场文书
作风转变年心得体会
2014/10/22 职场文书
成品仓库管理员岗位职责
2015/04/09 职场文书
2016年春季运动会广播稿
2015/08/19 职场文书
java.util.NoSuchElementException原因及两种解决方法
2022/06/28 Java/Android