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之正规地说一句话
Sep 28 Python
Python中单、双下划线的区别总结
Dec 01 Python
python之当你发现QTimer不能用时的解决方法
Jun 21 Python
python查看文件大小和文件夹内容的方法
Jul 08 Python
django一对多模型以及如何在前端实现详解
Jul 24 Python
python的移位操作实现详解
Aug 21 Python
python隐藏类中属性的3种实现方法
Dec 19 Python
python读取图片的几种方式及图像宽和高的存储顺序
Feb 11 Python
Keras使用ImageNet上预训练的模型方式
May 23 Python
基于Python实现体育彩票选号器功能代码实例
Sep 16 Python
如何在windows下安装配置python工具Ulipad
Oct 27 Python
python实现简单的聊天小程序
Jul 07 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进行MySQL删除记录操作代码
2008/06/07 PHP
php中的filesystem文件系统函数介绍及使用示例
2014/02/13 PHP
php关闭warning问题的解决方法
2016/05/17 PHP
你可能不再需要JQUERY
2021/03/09 Javascript
javascript 当前日期转化为中文的实现代码
2010/05/13 Javascript
JavaScript高级程序设计 阅读笔记(十八) js跨平台的事件
2012/08/14 Javascript
JS获取随机数函数可自定义最小值最大值
2014/05/08 Javascript
45个JavaScript编程注意事项、技巧大全
2015/02/11 Javascript
举例讲解AngularJS中的模块
2015/06/17 Javascript
BootStrap轻松实现微信页面开发代码分享
2016/10/21 Javascript
jQuery图片切换动画特效
2016/11/02 Javascript
flexslider.js实现移动端轮播
2017/02/05 Javascript
完美解决手机浏览器顶部下拉出现网页源或刷新的问题
2017/11/30 Javascript
安装Node.js并启动本地服务的操作教程
2018/05/12 Javascript
JavaScript如何实现图片处理与合成
2020/05/29 Javascript
详解JS深拷贝与浅拷贝
2020/08/04 Javascript
[10:42]Team Liquid Vs Newbee
2018/06/07 DOTA
[01:14:41]DOTA2-DPC中国联赛定级赛 iG vs Magma BO3第一场 1月8日
2021/03/11 DOTA
Python中使用MELIAE分析程序内存占用实例
2015/02/18 Python
python的random模块及加权随机算法的python实现方法
2017/01/04 Python
Python搭建HTTP服务器和FTP服务器
2017/03/09 Python
Python cookbook(数据结构与算法)从序列中移除重复项且保持元素间顺序不变的方法
2018/03/13 Python
在PyCharm下使用 ipython 交互式编程的方法
2019/01/17 Python
tensorflow 实现自定义梯度反向传播代码
2020/02/10 Python
浅析Python模块之间的相互引用问题
2021/02/26 Python
HTML5 Canvas的常用线条属性值总结
2016/03/17 HTML / CSS
HTML5事件方法全部汇总
2016/05/12 HTML / CSS
韩国邮政旗下生鲜食品网上超市:epost
2016/08/27 全球购物
GLAMGLOW香港官网:明星出镜前的秘密武器
2017/03/16 全球购物
康帕斯酒店预订:Compass Hospitality(支持中文)
2018/08/23 全球购物
马来西亚最大的在线隐形眼镜商店:MrLens
2019/03/27 全球购物
医学求职信
2014/05/28 职场文书
金正昆讲礼仪观后感
2015/06/11 职场文书
学习弘扬焦裕禄精神心得体会
2016/01/23 职场文书
Python多线程 Queue 模块常见用法
2021/07/04 Python
详解OpenCV获取高动态范围(HDR)成像
2022/04/29 Python