python 实现图片批量压缩的示例

 更新时间:2020年12月18日 17:31:08   作者:python学习者0  
这篇文章主要介绍了python 实现图片批量压缩的示例,帮助大家更好的利用python处理图片,感兴趣的朋友可以了解下

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

一:导入包

from PIL import Image
import os

二:获取图片文件的大小

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

三:拼接输出文件地址

def get_outfile(infile, outfile):
  if outfile:
    return outfile
  dir, suffix = os.path.splitext(infile)
  outfile = '{}-out{}'.format(dir, suffix)
  return outfile

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

def compress_image(infile, outfile='', mb=150, step=10, quality=80):
  """不改变图片尺寸压缩到指定大小
  :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)

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

#Python学习交流群:778463939
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'D:\learn\space.jpg')
  resize_image(r'D:\learn\space.jpg')

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

相关文章

  • Python实现爬虫从网络上下载文档的实例代码

    Python实现爬虫从网络上下载文档的实例代码

    小编最近在研究python,接触到了爬虫,本文给大家带来了Python实现爬虫从网络上下载文档的知识。下面小编把具体实例代码分享到脚本之家平台,感兴趣的朋友参考下吧
    2018-06-06
  • 图文详解Python中如何简单地解决Microsoft Visual C++ 14.0报错

    图文详解Python中如何简单地解决Microsoft Visual C++ 14.0报错

    有的时候安装python依赖包的时候,报错信息"Microsoft visual c++ 14.0 is required"的解决办法,下面这篇文章主要给大家介绍了关于Python中如何简单地解决Microsoft Visual C++ 14.0报错的相关资料,需要的朋友可以参考下
    2023-02-02
  • Python qrcode 生成一个二维码的实例详解

    Python qrcode 生成一个二维码的实例详解

    在本篇文章里小编给大家整理的是关于Python qrcode 生成一个二维码的实例内容,需要的朋友们可以学习参考下。
    2020-02-02
  • python 的topk算法实例

    python 的topk算法实例

    这篇文章主要介绍了python 的topk算法实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04
  • Python 使用自定义时间滚动日志处理器

    Python 使用自定义时间滚动日志处理器

    本教程介绍了如何使用Python的logging模块和自定义的日志处理器来按时间滚动日志文件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-12-12
  • arcgis使用Python脚本进行批量截图功能实现

    arcgis使用Python脚本进行批量截图功能实现

    最近公司数据部那边有个需求,需要结合矢量数据和影像数据,进行批量截图,并且截图中只能有一个图斑,还要添加上相应的水印,这篇文章主要介绍了arcgis使用Python脚本进行批量截图,需要的朋友可以参考下
    2023-01-01
  • Python中selenium_webdriver下拉框操作指南

    Python中selenium_webdriver下拉框操作指南

    selenium 虽然过了这么多年,但是到目前为止依然是比较流行的自动化框架了,下面这篇文章主要给大家介绍了关于Python中selenium_webdriver下拉框操作的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-01-01
  • Python SQLAlchemy建立模型基础关系模式过程详解

    Python SQLAlchemy建立模型基础关系模式过程详解

    SQLAlchemy是Python编程语言下的一款开源软件。提供了SQL工具包及对象关系映射(ORM)工具,使用MIT许可证发行。SQLAlchemy“采用简单的Python语言,为高效和高性能的数据库访问设计,实现了完整的企业级持久模型”。SQL数据库的量级和性能重要于对象集合
    2022-12-12
  • python实现猜拳游戏项目

    python实现猜拳游戏项目

    这篇文章主要为大家详细介绍了python实现猜拳游戏项目,以excel形式保存信息,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-11-11
  • 探索Python fcntl模块文件锁和文件控制的强大工具使用实例

    探索Python fcntl模块文件锁和文件控制的强大工具使用实例

    这篇文章主要介绍了Python fcntl模块文件锁和文件控制的强大工具使用实例探索,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-01-01

最新评论