python --压缩图片不改变图片尺寸
方法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 --压缩图片不改变图片尺寸相关推荐
- 压缩图片和改变图片图形
压缩图片和改变图片图形 GitHub网址:https://github.com/qianshao1030/BitmapDemo 包名:compile 'jp.wasabeef:glide-transf ...
- VC2010“添加资源-引入JPG图片”会改变图片大小
结论: 通过VC2010添加JPG图片(添加资源->引入jpg图片)会改变图片大小. 本身只是为了想给对话框添加一个背景图片,试了下bmp的,都没有问题. 为了测试下是否可以加载(用LoadIm ...
- 在Flash MX中实现自由拖动图片和改变图片
在Authorware中实现拖动图片及改变图片的大小,这对于交互型的课件是非常重要的.那么,在Flash中可不可以实现以上的功能呢?答案是肯定的,Flash凭借强大的ActionScript脚本语言, ...
- Python 技术篇-用PIL库旋转图片、改变图像尺寸
首先需要安装 PIL 库,直接pip install pillow就好了. 旋转包括 transpose() 和 rotate() 两种方式. resize((a, b)) 是用来改变图片尺寸的. # ...
- Java实现图片压缩且不改变原图尺寸
最近工作中涉及图片压缩相关的操作,需求如下: 大于2MB的图片需要压缩到2MB以下,且不改变原图的尺寸 引入依赖: <dependency><groupId>net.coobi ...
- 通过python使用多种方法改变图片尺寸
图片拉伸改变尺寸 文章目录 图片拉伸改变尺寸 使用PIL库 使用PythonMagick库 保持比例 不保持比例 使用PIL库 使用PIL库当中的Image功能即可实现对图片的拉伸. 在下列代码中,我 ...
- js常用插件(七)之conversion压缩图片(不改变图片尺寸大小)
js常用插件之conversion压缩图片(重点:不改变尺寸大小) 欢迎点击: 个人官网博客 图片压缩只是他的一种功能,更多可以查看官方文档 重点:压缩体积并且图片尺寸大小是不变的 用法很简单: &l ...
- 2019-04-07 Python之利用PIL改变图片颜色和生成手绘图
前:1.使用图片放在文件最后,需要的请自行下载 2.运行环境win10家庭版,已经安装好pillow库 一.学习总结 PIL库支持图像的储存,显示和处理,几乎能处理所有的图片格式,可以完成对图像的缩放 ...
- python点击按钮改变图片_单击tkinter按钮时更改图片
点击了python和一些按钮后,会产生一些颜色变化的按钮 当单击按钮时,是否可以更改按钮使用的.gif?我希望它在GPIO引脚关闭时显示ON,在GPIO引脚打开时显示off.在 目前我有:#BCM17 ...
最新文章
- 美多商城之订单(我的订单)
- Sublime Text3配置Lua运行环境
- java txt中文乱码,JAVA读取TXT文件 可解决中文乱码问题
- 阿里云直播PHP SDK如何使用
- 同步文件,不需要密码
- 让软件版本信息自动引用SVN修订版本号
- 描述一下普适计算时代中的计算机,《课程总结报告-普适计算及其应用》.doc
- 配置JDK时环境变量path和JAVA_HOME的作用
- 炁体源流 鸿蒙,一人之下:八绝技中最强被曝光,没想到炁体源流落榜,第一在后头...
- python画图入门
- 统计学三大分布(卡方、t、F)即相应概率密度图的R语言实现
- python如何进行web开发_如何用Python做Web开发
- STM32串口通信详解
- 北京功略----玩水篇
- 阿里巴巴淘宝用户行为数据集,UserBehavior表实战分析
- canvas绘制动态图片
- 电信黑莓行货手机断网问题
- 117页产业互联网发展趋势及机会分析
- 19.1 C++STL标准模板库大局观-STL总述、发展史、组成与数据结构谈
- 讨论一下观点.....