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按行读取文件的简单实现方法
Jun 22 Python
200行自定义python异步非阻塞Web框架
Mar 15 Python
一个基于flask的web应用诞生 flask和mysql相连(4)
Apr 11 Python
python实现随机漫步算法
Aug 27 Python
python实现给微信指定好友定时发送消息
Apr 29 Python
pip 安装库比较慢的解决方法(国内镜像)
Oct 06 Python
python模拟点击网页按钮实现方法
Feb 25 Python
Python IDE环境之 新版Pycharm安装详细教程
Mar 05 Python
基于PyTorch的permute和reshape/view的区别介绍
Jun 18 Python
如何用Python 加密文件
Sep 10 Python
Python request post上传文件常见要点
Nov 20 Python
Python selenium绕过webdriver监测执行javascript
Apr 12 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
thinkphp中ajax与php响应过程详解
2014/12/08 PHP
十幅图告诉你什么是PHP引用
2015/02/22 PHP
Laravel框架实现超简单的分页效果示例
2019/02/08 PHP
javascript 获取网页参数系统
2008/07/19 Javascript
NODE.JS加密模块CRYPTO常用方法介绍
2014/06/05 Javascript
利用jQuery实现漂亮的圆形进度条倒计时插件
2015/09/30 Javascript
js实现新年倒计时效果
2015/12/10 Javascript
javascript html5 canvas实现可拖动省份的中国地图
2016/03/11 Javascript
深入理解JavaScript中的call、apply、bind方法的区别
2016/05/30 Javascript
前端弹出对话框 js实现ajax交互
2016/09/09 Javascript
Vue通过input筛选数据
2020/10/26 Javascript
javaScript 连接打印机,打印小票的实例
2017/12/29 Javascript
vue页面切换过渡transition效果
2018/10/08 Javascript
angularJs中json数据转换与本地存储的实例
2018/10/08 Javascript
webpack+vue.js构建前端工程化的详细教程
2020/05/10 Javascript
vue treeselect获取当前选中项的label实例
2020/08/31 Javascript
Python cookbook(数据结构与算法)找出序列中出现次数最多的元素算法示例
2018/03/15 Python
Python求两个圆的交点坐标或三个圆的交点坐标方法
2018/11/07 Python
python内置数据类型之列表操作
2018/11/12 Python
对Pyhon实现静态变量全局变量的方法详解
2019/01/11 Python
Python基础学习之时间转换函数用法详解
2019/06/18 Python
python如何写try语句
2020/07/14 Python
python代码实现猜拳小游戏
2020/11/30 Python
加拿大领先的冒险和户外零售商:Atmosphere
2017/12/19 全球购物
JACK & JONES瑞典官方网站:杰克琼斯欧式风格男装
2017/12/23 全球购物
瑞典手机壳品牌:Richmond & Finch
2018/04/28 全球购物
荣耀商城:HIHONOR
2020/11/03 全球购物
yy司仪主持词
2014/03/22 职场文书
物流管理专业求职信
2014/05/29 职场文书
2014年学校党建工作总结
2014/11/11 职场文书
2014年图书馆工作总结
2014/11/25 职场文书
教师党员个人自我评价
2015/03/04 职场文书
2015纪念九一八事变84周年演讲稿
2015/03/19 职场文书
《我是什么》教学反思
2016/02/16 职场文书
Python基础详解之邮件处理
2021/04/28 Python
SpringBoot整合JWT的入门指南
2021/06/29 Java/Android