首页 > 编程语言 >python 图片压缩

python 图片压缩

时间:2024-10-10 15:44:06浏览次数:7  
标签:__ python 压缩 pic path byte 图片 quality size

'''
pip install pillow
'''
from io import BytesIO

from PIL import Image


def pic_compress(pic_path, out_path, target_size, quality=90, step=5):
    # 读取图片bytes
    with open(pic_path, 'rb') as f:
        pic_byte = f.read()

    current_size = len(pic_byte) / 1024  # 图片当前质量大小
    print("图片压缩前的大小为(KB):", current_size)
    while current_size > target_size:  # 当达到目标压缩大小后退出循环
        img = Image.open(BytesIO(pic_byte))
        buf = BytesIO()
        img.save(buf, format=img.format, quality=quality)
        pic_byte = buf.getvalue()
        if quality - step < 0:  # 以降低到最小质量
            break
        quality -= step
        current_size = len(pic_byte) / 1024

    # 保存图片
    with open(out_path, 'wb') as f:
        f.write(pic_byte)

    return len(pic_byte) / 1024


def main():
    pic_size = pic_compress('zy.jpg', 'new_zy.jpg', target_size=100)
    print("图片压缩后的大小为(KB):", pic_size)

if __name__ == '__main__':
    main()

  

标签:__,python,压缩,pic,path,byte,图片,quality,size
From: https://www.cnblogs.com/boye169/p/18456514

相关文章

  • SCIE1000 Python and Communication
    SCIE1000Semester2,2024PythonandCommunicationAssignment1ThescenarioAnewpublicsciencemuseuminStLuciaisdevelopinganexhibit.Afeatureofthemuseumisthateachexhibititemisaccompaniedbytwoexplanations,eachwrittenforadiffe......
  • Python基础知识7
    Python字典(dict)1.字典是一种可变容器模型,且可存储任意类型对象。2.字典的每个键值对(key:value)用冒号分割,每个对之间用逗号分割,整个字典包括在花括号{}中d={key1:value1,key2:value2,key3:value3}创建字典1.dict作为Python的关键字和内置函数,变量......
  • Python基础知识8
    Python集合(set)1.集合(set)是一个无序的不重复元素序列。2.集合中的元素不会重复,并且可以进行交集、并集、差集等常见的集合操作。创建集合1.可以使用大括号{}创建集合,元素之间用逗号,分隔,或者也可以使用set()函数创建集合。parame={value01,value02,...}set(va......
  • CentOS系统解压缩.7z后缀的文件
    先安装工具sudoyuminstallp7zipp7zip-plugins解压缩7zxmvtec3d.7zx参数表示解压并保持原有目录结构。有报错7-Zip[64]16.02:Copyright(c)1999-2016IgorPavlov:2016-05-21p7zipVersion16.02(locale=en_US.UTF-8,Utf16=on,HugeFiles=on,64bits,6......
  • Python 处理 JSON 格式数据
    Author:ACatSmilingSince:2024-10-09需求:将文件中的JSON格式数据,指定Key的值替换。对于文件的整个文本为JSON格式的数据。示例:{'A':{'a':23.45,'b':56.78,'c':89.01}}Python代码:importjson#读取原始JSON数......
  • 【python实操】python小程序之继承
    引言python小程序之继承文章目录引言一、继承1.1概念1.1.1基本语法1.1.2关键点解释1.1.3示例1.1.4总结1.2题目1.3代码1.4代码解释1.4.1类定义1.4.2对象创建与方法调用1.4.3总结二、思考一、继承1.1概念python中的继承是一种强大的机制,它允许一......
  • <Project-8.1 pdf2tx-MM> Python Flask 用浏览器翻译PDF内容 2个翻译引擎 繁简中文结果
    更新ProjectName:pdf2tx(P6)Date:5oct.24Function:在浏览器中翻译PDF文件Code:https://blog.csdn.net/davenian/article/details/142723144升级ProjectName:pdf2tx-mm(P8)7oct.24 加入多线程,分页OCR识别,提高性能与速度使用googletranslator, AzureAPI做......
  • Springboot动漫图片分享网站k3r27(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表用户,画手,图片分类,图片分享,求稿任务,接稿请求开题报告内容一、研究背景随着互联网技术的飞速发展和动漫文化的普及,越来越多的人开始分享和欣赏动漫图片。然......
  • SDL下创建移动的图片
    在上一章,我们已经了解到如何设置窗口背景,现在,我们将继续引进几张新图片,让它能够在窗口移动。下面的链接可以回顾前面的内容:SDL下设置窗口背景图片1.我们先要确定我们在窗口移动的是哪些图片和图片的大小。stringa[]={"furong1.jpg","furong2.jpg",......
  • 【Python脚本】getopt参数解析笔记
    getopt参数解析笔记背景在Python中,使用getopt模块进行命令行参数解析是常见的需求。在编写脚本时,正确地定义参数选项对于确保程序正常运行至关重要。这是一个用于检测安卓软件版本的脚本一部分,有些用法和笔记分享给大家问题描述在某个脚本中,使用getopt解析命令......