• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    python实现图片批量压缩

    项目中大量用到图片加载,由于图片太大,加载速度很慢,因此需要对文件进行统一压缩

    第一种

     一:安装包

    python -m pip install Pillow

    二:导入包

    from PIL import Image
    import os

    三:获取图片文件的大小

    def get_size(file):
        # 获取文件大小:KB
        size = os.path.getsize(file)
        return size / 1024

    四:输出文件夹下的文件

    dir_path = r'file_path'
    items = os.listdir(dir_path)
    
    for item in items:
        # print(item)
        path = os.path.join(dir_path, item)
        print(item)

    五:压缩文件到指定大小,我期望的是150KB,step和quality可以修改到最合适的数值

    def compress_image(infile, outfile=None, mb=150, step=10, quality=80):
        """不改变图片尺寸压缩到指定大小
        :param infile: 压缩源文件
        :param outfile: 压缩文件保存地址
        :param mb: 压缩目标,KB
        :param step: 每次调整的压缩比率
        :param quality: 初始压缩比率
        :return: 压缩文件地址,压缩文件大小
        """
        if outfile is None:
            outfile = infile
        o_size = get_size(infile)
        if o_size = mb:
            im = Image.open(infile)
            im.save(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)

    六:修改图片尺寸,如果同时有修改尺寸和大小的需要,可以先修改尺寸,再压缩大小

    def resize_image(infile, outfile='', x_s=800):
        """修改图片尺寸
        :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)
    
        out.save(outfile)

    七:运行程序

    if __name__ == '__main__':
                          # 源路径      # 压缩后路径
        compress_image(r"file_path", r"E:\docs\2.JPG")
                        # 源路径      # 压缩后路径
        resize_image(r"file_path", r"E:\docs\3.JPG")

    第二种

    import os
    from PIL import Image
    import threading,time
    
    def imgToProgressive(path):
        if not path.split('.')[-1:][0] in ['png','jpg','jpeg']:  #if path isn't a image file,return
            return
        if os.path.isdir(path):
            return
    ##########transform img to progressive
        img = Image.open(path)
        destination = path.split('.')[:-1][0]+'_destination.'+path.split('.')[-1:][0]
        try:
            print(path.split('\\')[-1:][0],'开始转换图片')
            img.save(destination, "JPEG", quality=80, optimize=True, progressive=True) #转换就是直接另存为
            print(path.split('\\')[-1:][0],'转换完毕')
        except IOError:
            PIL.ImageFile.MAXBLOCK = img.size[0] * img.size[1]
            img.save(destination, "JPEG", quality=80, optimize=True, progressive=True)
            print(path.split('\\')[-1:][0],'转换完毕')
        print('开始重命名文件')
        os.remove(path)
        os.rename(destination,path)
    
    for d,_,fl in os.walk(os.getcwd()):    #遍历目录下所有文件
        for f in fl:
            try:
                imgToProgressive(d+'\\'+f)
            except:
                pass

    以上就是python实现图片批量压缩的详细内容,更多关于python 图片压缩的资料请关注脚本之家其它相关文章!

    您可能感兴趣的文章:
    • python 实现图片批量压缩的示例
    • python 无损批量压缩图片(支持保留图片信息)的示例
    • python如何实现图片压缩
    • Python无损压缩图片的示例代码
    • python3 图片 4通道转成3通道 1通道转成3通道 图片压缩实例
    • python实现图片压缩代码实例
    • python实现图片批量压缩程序
    • Python实现批量压缩图片
    • python中学习K-Means和图片压缩
    • python利用Guetzli批量压缩图片
    • 在Python中使用pngquant压缩png图片的教程
    • python 批量压缩图片的脚本
    上一篇:如何用python绘制雷达图
    下一篇:写一个Python脚本自动爬取Bilibili小视频
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    python实现图片批量压缩 python,实现,图片,批量,压缩,