python压缩图片--指定压缩大小且保真压缩

python多种方法压缩图片,opencv、PIL、tinypng、pngquant压缩图片 文章目录1 python+opncv实现图片的压缩2 python+PIL实现图片的压缩3 python+tinypng实现图片的压缩3.1 tinypng介绍3.2 tinypng压缩图片API使用3.2.1 tingypng安装3.2.2 tingypng安装3.2.3 tingypng优缺点:4 python+pngquant实现图片的压缩 1 python+opncv实现图片的压缩 class Compress_img: def __init__(self, img_path): 阅读详情
AI摘要

文章主要探讨Python图片压缩问题。使用Pillow压缩图片,大小质量不达标且失真严重。而采用OpenCV可实现保真压缩,其核心思路是循环降低图片质量,直至符合目标质量后退出循环。

代码核心思路

  • 循环降低图片质量quality
  • 直至图片质量大小符合目标质量后退出循环

pillow压缩失真严重

'''
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('test.jpg', 'new_test.jpg', target_size=100)
    print("图片压缩后的大小为(KB):", pic_size)

if __name__ == '__main__':
    main()

pillow处理后和原图片的对比
在这里插入图片描述

使用pillow压缩的图片不单止大小质量没达标而且处理后的图片失真不忍直视。

使用opencv保真压缩

'''
pip install numpy
pip install opencv-python
'''
from io import BytesIO

import cv2
import numpy as np


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

    img_np = np.frombuffer(pic_byte, np.uint8)
    img_cv = cv2.imdecode(img_np, cv2.IMREAD_ANYCOLOR)

    current_size = len(pic_byte) / 1024
    print("图片压缩前的大小为(KB):", current_size)
    while current_size > target_size:
        pic_byte = cv2.imencode(pic_type, img_cv, [int(cv2.IMWRITE_JPEG_QUALITY), quality])[1]
        if quality - step < 0:
            break
        quality -= step
        current_size = len(pic_byte) / 1024

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

    return len(pic_byte) / 1024


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


if __name__ == '__main__':
    main()

opencv处理后和原图片的对比
在这里插入图片描述

文章灵感

  • 想用python压缩图片然后网上搜,搜索结果90%都是python使用pillow的压缩。最主要是pillow压缩后失真严重,在图片压缩方面纯属是个摆设的功能。
突破阿里云OSS图片20M限制:PHP+Imagick智能压缩方案实战 在Web开发与云存储实践中,对象存储服务(OSS)是托管静态资源的通用方案,其图片处理功能常用于实时生成缩略图。然而,服务通常存在文件大小限制,例如阿里云IMG服务对处理图片有20MB的上限。这一限制源于性能、稳定性与成本考量——大文件解码消耗大量内存与计算资源,可能引发延迟并增加服务成本。其技术价值在于保障服务的可靠性与响应速度。在电商、内容平台等涉及用户上传高清图片的应用场景中,超大文件(如单反RAW转JPG、高分辨率扫描件)极易触发此限制,导致前端加载失败或流量消耗激增。本文聚焦于通过服务端预处理方案 阅读详情

相关推荐

图片格式 WebP、JPEG、PNG、SVG 及转换

在当今数字时代,图像在网页设计和应用中扮演着至关重要的角色;选择适当的图像格式直接影响着网站的加载速度、用户体验和整体性能。

leoatliang的博客 4424

使用python对图片进行压缩

简单说明 对于图片,强行被定义高和宽会变形,我们希望图片被改变大小后,比例保持不变,完成对图片的压缩。 使用工具 1.pillow : pip install pillow -i https://pypi.douban.com/simple 2. os : 连接文件,并获取文件夹下的文件名 实现过程 获取picture文件下的相关图片的路径,将路径放到列表里面进行存储 使用Image模块,循环遍历所有路径图片,读取图片的大小。 定义缩小后的图片宽度大小,并根据原图比例计算压缩后图像的高度 使用resize

进阶中的小白 1万+

python知识点100篇系列(10)-使用python压缩图片的两种方式

两种情况都要使用PIL模块;

weixin_42551921的博客 852

PYTHON 自动化办公:压缩图片(PIL)

利用python的Pillow库对图片、文件夹图片进行压缩

Henry的博客 2526

用Python实现简单的图像压缩算法

图像压缩是一项重要的图像处理任务,它可以减小图像文件的大小,从而节省存储空间和传输带宽。在本篇文章中,我将介绍如何使用Python实现一个简单的图像压缩算法。我们将使用Python的PIL库来读取和处理图像,并使用一种基于块的压缩算法来降低图像的大小。当然,这只是一个基于块的简单算法,实际的图像压缩算法要复杂得多。运行上述代码后,你将会在指定的输出路径中找到压缩后的图像。然后,我们获取原始图像的宽度和高度,计算出压缩后的宽度和高度。的函数,该函数接受输入图像路径、输出图像路径和压缩率作为参数。

Byte_O_O的博客 492

python:实现图片压缩(附完整源码)

python:实现图片压缩(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 751

用 Cursor AI 编辑器编写电商图片批量保真压缩脚本:基于 TinyPNG 的高效实践

Cursor AI 编辑器是由 Anysphere 公司精心打造推出的一款智能代码编辑器,它深度融合了先进的人工智能技术,宛如开发者的 “智慧助手”,为编程工作带来了前所未有的便利与效率提升。

AITechLab 的博客 1594

图片处理技术实战:压缩、旋转、base64转换

在图片压缩的领域中,压缩技术主要分为两大类:无损压缩与有损压缩。无损压缩算法能够确保原始图片数据在压缩和解压缩后保持完全一致,不会丢失任何信息。这种类型的压缩技术适用于需要高保真度的场合,比如医学图像处理、专业摄影和法律文件。常见的无损压缩格式包括PNG和GIF。有损压缩算法则允许在压缩过程中牺牲一部分图片质量以换取更小的文件大小。这种方式非常适合网络传输和多媒体应用,因为它们往往对图片质量的要求不那么严苛,更多的是寻求文件大小和加载速度的平衡。JPEG是最常见的有损压缩格式。

weixin_36059856的博客 1157

Word图片保存变糊的根源与彻底解决:从压缩机制到高保真工作流

在文档处理中,图片压缩与重采样是导致画质损失的核心机制,其原理在于软件为控制文件体积而自动降低图像分辨率。理解这一技术价值在于,它能帮助用户从源头避免不可逆的像素丢失,尤其在办公排版、产品手册制作、跨平台协作等场景中至关重要。当图片被反复保存或经不同软件处理时,失真风险急剧上升。本文深入剖析Word默认压缩策略的触发条件与版本差异,提供从全局设置、格式选择到导出优化的完整防压缩方案,并融入公式图片转Word、表格列宽调整等高频搜索问题的独家避坑经验,助你建立高保真图片处理流水线。

weixin_34343000的博客 303

无损图片压缩技术详解与实战应用

在数字图像处理领域,无损图片压缩(Lossless Image Compression)是一项关键基础技术,其核心目标是在不损失任何图像信息的前提下,尽可能减少图像文件的存储空间。这种压缩方式通过识别并消除数据中的冗余信息(如重复的像素模式、颜色值等),实现图像数据的高效存储与传输。无损压缩广泛应用于对图像质量要求极高的场景,如医学影像、工程图纸、数字出版、以及网页资源优化等领域。常见的支持无损压缩的图像格式包括等,它们在不同应用场景中采用了不同的编码策略,如。

weixin_42612804的博客 1119

利用Python搭建用户画像系统

用户画像是当下很多企业都会提及的概念,多数情况下会和大数据以及营销挂钩。本文将对用户画像的相关知识进行进行简单的介绍,并利用Python去实现一个简单的用户画像系统。 1.什么是用户画像 用户画像可以理解成是海量数据的标签,根据用户的目标、行为和观点的差异,将他们区分为不同的类型,然后每种类型中抽取出典型特征,赋予名字、照片、一些人口统计学要素、场景等描述,形成一个人物原型 。 用户画像 =...

黎荣恒的博客 3万+

图片压缩;图片压缩工具

链接: https://pan.baidu.com/s/1piPy2vsNCAYk8z1L2ToJ0w?pwd=wxds 提取码: wxds。百度网盘下载路径:通过网盘分享的文件:图片压缩工具.zip。已经打包成exe工具;

奔走在rm -rf /* 的路上~ 30

Python爬虫实战:用Selenium+ChromeDriver批量抓取政府网站政策文件(附完整代码)

本文详细介绍了使用Python的Selenium和ChromeDriver进行政府网站政策文件批量抓取的实战技巧。从环境配置、动态页面元素定位到分页机制破解和反爬虫策略,提供了完整的解决方案和代码示例,帮助开发者高效获取结构化政策数据。

weixin_42531710的博客 265

python图片压缩不失真_调整图像大小而不失真OpenCV

你可以在下面试试。该函数将保持原始图像的纵横比。def image_resize(image, width = None, height = None, inter = cv2.INTER_AREA):# initialize the dimensions of the image to be resized and# grab the image sizedim = None(h, w) = i...

weixin_36108913的博客 2271

计算机组成原理实验二 运算器组成实验

事实上,ALU的设计是在全加器的基础上,对全加器功能的扩展来实现符合要求的多种算术/逻辑运算的功能。为了实现多种功能的运算,An、Bn数据是不能直接与全加器相连接的,它们受到功能变量F3—F1的制约,因此,可由An、Bn数据和功能变量F3-F1组合成新的函数Xn 、Yn,然后,再将Xn 、Yn和下一位进位Cn-1通过全加器进行全加运算以实现所需的运算功能。AC寄存器可用来存储ALU的输入以实现两个操作数的运算操作,也可以用来存储来自ALU的结果,以将这些结果反馈给ALU以进行更多的处理。

qq_63574533的博客 1447

【芯片设计- RTL 编译与仿真 1.2 -- Visualizer 常用使用命令】

打开波形后,如果想要看到所有信号的数据,可以点击下图中红框中的按钮,因为默认verdi 默认并不是显示所用信号。如果想统计某一个信号中有多少笔数据时,可以使用 Expression->Edege Count 功能。如下图所示,如果没有打开前导0的功能时,当某一笔数据位0时,只会显示1个0。如果需要将波形的数据导出到文本文件时,可以按照下面步骤进行。打开前导0功能之后,会根据数据位宽来显示对应0的个数。

CodingCos的博客 2046

PPT 文件太大发不出去?压缩主要还是清图片

PPT体积过大的主要原因是高清图片、嵌入字体和视频。80MB的PPT中,media文件夹通常占75MB。解决方案包括:压缩图片至适当分辨率、避免嵌入字体、用链接方式插入视频、清理无用文件。PowerPoint自带压缩功能,但批量处理推荐在线工具如91aitool,支持多种压缩模式。脚本处理可使用python-pptx库。日常建议:插入前先压缩图片,非必要不嵌入字体,定期清理隐藏内容。

qq_42215257的博客 702

Vue3 - 实现用户上传本地视频文件到服务器+上传进度条+暂停续传+中断取消上传等,视频上传后可在线播放预览已上传的视频,视频文件上传视频回显示例代码(支持Element、Antd等upload组件

实现视频上传和视频预览,vue3实现视频上传功能,上传视频回显,视频流上传播放功能,vue与axios上传视频并显示上传进度,upload组件实现视频文件上传视频回显,upload组件实现视频上传及进度条展示,视频上传及实时进度条显示,视频上传过程中如何中断上传,VUE3+element 上传视频,大文件分片上传+断点续传,axios大文件切片上传,Vue3上传视频后如何播放预览,上传本地视频到后端服务器及在线预览播放视频+移除视频+进度条上传,将已选视频上传服务端并可预览视频,详细实现选择视频并上传到服务

🏆 前端领域优质创作者 3112

期刊对图片要求的tif格式,且dpi=600,通用python代码模板(模型训练或预测效果图)

=注意:python程序中不认识tif格式只认识tiff格式,实际上tiff格式和tif完全一样,期刊要求tif格式,就按照上述程序处理即可。(此设置会禁用 Word 自动压缩图片的功能,确保您的高分辨率 TIF 图像质量不受损)Word 设置:文件→选项→高级→勾选 “不压缩图像”+ 设为 “高保真”插入图片:插入→图片→此设备→选择 TIF 文件(或复制→粘贴保留源格式)右键点击,选择粘贴选项→保留源格式(或使用 “保留图片” 选项)选中图片→引用→插入题注→选择 “图表” 标签→点击 “确定”

m0_54342473的博客 942

Altium Designer(AD24/25)导入DXF或DWG结构文件的方法

DXF(Drawing Exchange Format)和DWG(Drawing)是两种常见的CAD(计算机辅助设计)文件格式,常用于结构和硬件之间的沟通。本文介绍Altium Designer(AD24/25)导入DXF或DWG结构文件的方法。

fydar的博客 1434

Jetson AGX Orin平台Jetpack5升级Jetpack6,自研载板USB不工作问题调试

1. 问题描述将AGX Orin工业的新板放到定制的载板上当在ubuntu 22和Jetpack 6.1上使用SDKManager刷机时,lsusb为空,并且在引导时没有发现/注册xusb设备。USB C端口正常打开并供电,但似乎没有数据传输。在Ubuntu 18 Jetpack 5.1.4 SDKManager上同样刷机之后,usb C集线器在引导时被正确地发现,显示在lsusb中,并识别/挂载外部驱动器。

jzwjzw19900922的博客 1509

Word图片粘贴到富文本编辑器保真方案全解析

富文本编辑器作为Web内容管理的核心组件,其与Office文档的兼容性直接影响用户体验。从技术原理看,Word图片通过剪贴板传输时,会经历Windows系统CF_HTML格式转换和浏览器解析双重处理,导致分辨率下降和色彩失真。通过分析UEditor等主流富文本编辑器的图片处理机制,发现可通过配置优化、Canvas重绘等技术手段提升保真度。特别是在政务系统、在线文档等对内容精度要求高的场景中,建议采用前端Canvas处理结合后端Office文档解析的混合方案,实测可将图片保真度从35%提升至90%以上。

weixin_29327525的博客 176

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Word图片保存后变模糊?关闭压缩与防失真全攻略

图片压缩是文档处理中常见的优化机制,通过降低分辨率减小文件体积,但可能导致Word图片模糊。其原理是保存时根据显示尺寸重新采样,牺牲像素信息。合理控制压缩能平衡文档大小与图像质量,在技术文档、报告等场景中尤为重要。本文针对Word图片保存后变模糊问题,提供关闭自动压缩、调整插入设置等实操方法,并融入图片压缩、Word图片模糊等热词,帮助用户实现高清文档。

weixin_30898555的博客 242

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Python批量上传图片到OSS:目录结构保真与并发优化实践

对象存储(OSS)作为海量文件的持久化方案,正在替代本地磁盘成为图片资源管理的核心载体。在网站迁移或素材归档时,如何将本地多级目录中的图片完整且高效地同步到云端,是工程实践中的常见痛点。其原理并不复杂:通过递归遍历采集文件路径,将本地相对路径映射为OSS的Key,并借助并发上传提升吞吐。技术价值在于让上传行为可预期、可校验、可重复,同时保留目录层级,使CDN回源、权限控制和生命周期策略得以无缝衔接。针对图片批量处理的场景,Python结合OSS SDK能够快速构建稳定的上传脚本。本文围绕Python、OSS

weixin_34175509的博客 341

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Unity游戏开发图片纹理压缩方案

Unity3D引擎对纹理的处理是智能的:不论你放入的是PNG,PSD还是TGA,它们都会被自动转换成Unity自己的Texture2D格式。 在Texture2D的设置选项中,你可以针对不同的平台,设置不同的压缩格式,如IOS设置成PVRTC4,Android平台设置成RGBA16等。 嗯,非常的智能。 但是,在一些进阶的使用中,一些情况是难以满足的。 比如,我们NGUI的图集纹理...

weixin_33727510的博客 152
上一篇: windows环境下c++调用python
下一篇: 彻底禁断禁用wps联网
Paper_Sheep
博客等级 码龄7年 4粉丝 8原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值