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 相关文章推荐
Python2中的raw_input() 与 input()
Jun 12 Python
python数据类型判断type与isinstance的区别实例解析
Oct 31 Python
Python 新建文件夹与复制文件夹内所有内容的方法
Oct 27 Python
Python中的random.uniform()函数教程与实例解析
Mar 02 Python
Python实现的排列组合、破解密码算法示例
Apr 12 Python
Python学习笔记之集合的概念和简单使用示例
Aug 22 Python
Python openpyxl读取单元格字体颜色过程解析
Sep 03 Python
pytorch之Resize()函数具体使用详解
Feb 27 Python
mac安装python3后使用pip和pip3的区别说明
Sep 01 Python
python 如何停止一个死循环的线程
Nov 24 Python
Django操作cookie的实现
May 26 Python
python和C/C++混合编程之使用ctypes调用 C/C++的dll
Apr 29 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递归方法实现无限分类实例代码
2014/02/28 PHP
一个简单安全的PHP验证码类 附调用方法
2016/06/24 PHP
详解PHP版本兼容之openssl调用参数
2018/07/25 PHP
window.location和document.location的区别分析
2008/12/23 Javascript
文本有关的样式和jQuery求对象的高宽问题分别说明
2013/08/30 Javascript
Event altKey,ctrlKey,shiftKey属性解析
2013/12/18 Javascript
jquery动态添加删除一行数据示例
2014/06/12 Javascript
jquery中ready()函数执行的时机和window的load事件比较
2015/06/22 Javascript
Javascript实现商品秒杀倒计时(时间与服务器时间同步)
2015/09/16 Javascript
AngularJS向后端ASP.NET API控制器上传文件
2016/02/03 Javascript
微信小程序 LOL 英雄介绍开发实例
2016/09/30 Javascript
js+css3制作时钟特效
2016/10/16 Javascript
JavaScript实现使用Canvas绘制图形的基本教程
2016/10/27 Javascript
HTML5+Canvas调用手机拍照功能实现图片上传(上)
2017/04/21 Javascript
nodejs利用ajax实现网页无刷新上传图片实例代码
2017/06/06 NodeJs
解决ionic和angular上拉加载的问题
2017/08/03 Javascript
对angular4子路由&辅助路由详解
2018/10/09 Javascript
JavaScript的词法结构精华篇
2018/10/17 Javascript
JavaScript交换两个变量方法实例
2019/11/25 Javascript
浅谈Python 集合(set)类型的操作——并交差
2016/06/30 Python
关于反爬虫的一些简单总结
2017/12/13 Python
python Celery定时任务的示例
2018/03/13 Python
在Python中字符串、列表、元组、字典之间的相互转换
2019/11/15 Python
tensorflow 获取checkpoint中的变量列表实例
2020/02/11 Python
Django ModelForm组件原理及用法详解
2020/10/12 Python
速卖通欧盟:Aliexpress EU
2020/08/19 全球购物
简历中自我评价范文3则
2013/12/14 职场文书
小学数学国培感言
2014/03/10 职场文书
单位绩效考核方案
2014/05/11 职场文书
争先创优演讲稿
2014/09/15 职场文书
办公室主任四风问题对照检查材料思想汇报
2014/09/28 职场文书
大学生迟到检讨书500字
2014/10/17 职场文书
民政局标准版离婚协议书
2014/12/01 职场文书
幼师个人总结范文
2015/02/28 职场文书
班干部竞选演讲稿(精选5篇)
2019/09/24 职场文书
Python中requests库的用法详解
2022/06/05 Python