博客
关于我
python PIL 压缩图片
阅读量:349 次
发布时间:2019-03-04

本文共 1359 字,大约阅读时间需要 4 分钟。

from PIL import Imageimport osdef get_size(file):    # 获取文件大小:KB    size = os.path.getsize(file)    return size / 1024def get_outfile(infile, outfile):    if outfile:        return outfile    dir, suffix = os.path.splitext(infile)    outfile = '{}-out{}'.format(dir, suffix)    return outfiledef compress_image(infile, outfile='', mb=1000, step=10, quality=100):    """不改变图片尺寸压缩到指定大小    :param infile: 压缩源文件    :param outfile: 压缩文件保存地址    :param mb: 压缩目标,KB    :param step: 每次调整的压缩比率    :param quality: 初始压缩比率    :return: 压缩文件地址,压缩文件大小    """    o_size = get_size(infile)    if o_size <= mb:        return infile    outfile = get_outfile(infile, outfile)    while o_size > mb:        im = Image.open(infile)        im.save(outfile, quality=quality)        if quality - step < 0:            break        quality -= step        o_size = get_size(outfile)    return outfile, get_size(outfile)def resize_image(infile, outfile='', x_s=1376):    """修改图片尺寸    :param infile: 图片源文件    :param outfile: 重设尺寸文件保存地址    :param x_s: 设置的宽度    :return:    """    im = Image.open(infile)    x, y = im.size    y_s = int(y * x_s / x)    out = im.resize((x_s, y_s), Image.ANTIALIAS)    outfile = get_outfile(infile, outfile)    out.save(outfile)if __name__ == '__main__':    compress_image(r'G:\pic\app\011漫画\软著图\2020-09-28 00-19-22.jpg')    # resize_image(r'D:\learn\space.jpg')

 

转载地址:http://xrsr.baihongyu.com/

你可能感兴趣的文章
【快慢指针】——LeetCode - 287. 寻找重复数
查看>>
【数据结构系列】链表合并问题——链表的奇偶重排
查看>>
【Redis】Redis客户端实现的基本原理
查看>>
全局锁和表锁 :给表加个字段怎么有这么多阻碍?
查看>>
事务到底是隔离的还是不隔离的?
查看>>
SpringMVC的Model对象的使用
查看>>
找工作过程中的感受与收获
查看>>
文本读取和csv文件生成工具类的编写
查看>>
@Import注解---导入资源
查看>>
Leetcode 面试题 08.04. 幂集(DAY 103) ---- 回溯算法学习期
查看>>
重读&笔记系列-《Linux多线程服务端编程》第一章
查看>>
解决ubuntu在虚拟机(VMware)环境下不能联网的问题
查看>>
LeetCode - 字符串相乘
查看>>
maya里创建不同颜色大小的HeadsUpDisplay的效果
查看>>
python 导航栏
查看>>
Python根据程序名称结束进程
查看>>
C# 适配器模式
查看>>
二分查找与插入排序的结合使用
查看>>
71 简化路径(模拟、栈)
查看>>
892 三维形体的表面积(分析)
查看>>