方法1

from PIL import Image
import osdef compress_image(infile, outfile, quality=50):"""压缩图片文件大小:param infile: 原始图片文件:param outfile: 压缩后图片文件:param quality: 压缩质量,默认为50:return: 无"""try:with Image.open(infile) as im:im.save(outfile, quality=quality)except Exception as e:print(f"压缩图片失败:{e}")returnif __name__ == '__main__':infile = 'test.jpg'outfile = 'test_compressed.jpg'compress_image(infile, outfile, quality=50)print(f"压缩前文件大小:{os.path.getsize(infile)}")print(f"压缩后文件大小:{os.path.getsize(outfile)}")

在这个示例中,我们使用了Pillow库中的Image类来打开原始图片文件,然后使用save方法将其保存为压缩后的图片文件。quality参数指定了压缩质量,值越小,压缩后的图片文件大小越小。最后,我们使用os.path.getsize函数来获取压缩前和压缩后的文件大小。

方法2
不改变图片尺寸

from PIL import Image
import osdef get_size(file):# 获取文件大小:KBsize = os.path.getsize(file)return size / 1024def get_outfile(infile, outfile):if outfile:return outfiledir, suffix = os.path.splitext(infile)outfile = '{}-out{}'.format(dir, suffix)return outfiledef 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)print(o_size)if o_size <= mb:return infileoutfile = get_outfile(infile, outfile)while o_size > mb:im = Image.open(infile)# 出现 OSError: cannot write mode RGBA as JPEG 错误时加入下方语句im = im.convert("RGB")im.save(outfile, quality=quality)if quality - step < 0:breakquality -= stepo_size = get_size(outfile)return outfile, get_size(outfile)if __name__ == '__main__': print(compress_image(r'C:\Users\Administrator\Desktop\100000.png',r'C:\Users\Administrator\Desktop\888.jpg'))

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

def resize_image(infile, outfile='', x_s=1376):"""修改图片尺寸:param infile: 图片源文件:param outfile: 重设尺寸文件保存地址:param x_s: 设置的宽度:return:"""im = Image.open(infile)x, y = im.sizey_s = int(y * x_s / x)out = im.resize((x_s, y_s), Image.ANTIALIAS)outfile = get_outfile(infile, outfile)out.save(outfile)

python --压缩图片不改变图片尺寸相关推荐

  1. 压缩图片和改变图片图形

    压缩图片和改变图片图形 GitHub网址:https://github.com/qianshao1030/BitmapDemo 包名:compile 'jp.wasabeef:glide-transf ...

  2. VC2010“添加资源-引入JPG图片”会改变图片大小

    结论: 通过VC2010添加JPG图片(添加资源->引入jpg图片)会改变图片大小. 本身只是为了想给对话框添加一个背景图片,试了下bmp的,都没有问题. 为了测试下是否可以加载(用LoadIm ...

  3. 在Flash MX中实现自由拖动图片和改变图片

    在Authorware中实现拖动图片及改变图片的大小,这对于交互型的课件是非常重要的.那么,在Flash中可不可以实现以上的功能呢?答案是肯定的,Flash凭借强大的ActionScript脚本语言, ...

  4. Python 技术篇-用PIL库旋转图片、改变图像尺寸

    首先需要安装 PIL 库,直接pip install pillow就好了. 旋转包括 transpose() 和 rotate() 两种方式. resize((a, b)) 是用来改变图片尺寸的. # ...

  5. Java实现图片压缩且不改变原图尺寸

    最近工作中涉及图片压缩相关的操作,需求如下: 大于2MB的图片需要压缩到2MB以下,且不改变原图的尺寸 引入依赖: <dependency><groupId>net.coobi ...

  6. 通过python使用多种方法改变图片尺寸

    图片拉伸改变尺寸 文章目录 图片拉伸改变尺寸 使用PIL库 使用PythonMagick库 保持比例 不保持比例 使用PIL库 使用PIL库当中的Image功能即可实现对图片的拉伸. 在下列代码中,我 ...

  7. js常用插件(七)之conversion压缩图片(不改变图片尺寸大小)

    js常用插件之conversion压缩图片(重点:不改变尺寸大小) 欢迎点击: 个人官网博客 图片压缩只是他的一种功能,更多可以查看官方文档 重点:压缩体积并且图片尺寸大小是不变的 用法很简单: &l ...

  8. 2019-04-07 Python之利用PIL改变图片颜色和生成手绘图

    前:1.使用图片放在文件最后,需要的请自行下载 2.运行环境win10家庭版,已经安装好pillow库 一.学习总结 PIL库支持图像的储存,显示和处理,几乎能处理所有的图片格式,可以完成对图像的缩放 ...

  9. python点击按钮改变图片_单击tkinter按钮时更改图片

    点击了python和一些按钮后,会产生一些颜色变化的按钮 当单击按钮时,是否可以更改按钮使用的.gif?我希望它在GPIO引脚关闭时显示ON,在GPIO引脚打开时显示off.在 目前我有:#BCM17 ...

最新文章

  1. 美多商城之订单(我的订单)
  2. Sublime Text3配置Lua运行环境
  3. java txt中文乱码,JAVA读取TXT文件 可解决中文乱码问题
  4. 阿里云直播PHP SDK如何使用
  5. 同步文件,不需要密码
  6. 让软件版本信息自动引用SVN修订版本号
  7. 描述一下普适计算时代中的计算机,《课程总结报告-普适计算及其应用》.doc
  8. 配置JDK时环境变量path和JAVA_HOME的作用
  9. 炁体源流 鸿蒙,一人之下:八绝技中最强被曝光,没想到炁体源流落榜,第一在后头...
  10. python画图入门
  11. 统计学三大分布(卡方、t、F)即相应概率密度图的R语言实现
  12. python如何进行web开发_如何用Python做Web开发
  13. STM32串口通信详解
  14. 北京功略----玩水篇
  15. 阿里巴巴淘宝用户行为数据集,UserBehavior表实战分析
  16. canvas绘制动态图片
  17. 电信黑莓行货手机断网问题
  18. 117页产业互联网发展趋势及机会分析
  19. 19.1 C++STL标准模板库大局观-STL总述、发展史、组成与数据结构谈
  20. 讨论一下观点.....

热门文章

  1. -bash: telnet: command not found
  2. php扩展1:filp/whoops(用于调试,方便定位错误点)
  3. ES生产集群部署之必须根据自己的集群设置的一些重要参数
  4. 洛谷 题解 P5514 【[MtOI2019]永夜的报应】
  5. C语言合法标识符输入空格的处理
  6. 如何反编译apk文件得到源码和XML文件
  7. arpspoof+driftnet+ ARP欺骗简单图片抓取
  8. c语言Python语法结构差别,Python语法与类C语言语法的差别
  9. Java 快速排序法
  10. java实现无锁队列