使用 python 压缩 png 图片,高达 80% 压缩率,肉眼无差异(一):为什么不用 pillow库.md

Python脚本,可以批量把JPG转换PNG功能! 这是一个Python脚本,用于批量将JPG等多种图片格式转换为PNG格式。主要功能包括:支持JPG/PNG/BMP/TIFF/WEBP等多种输入格式;可自定义输出质量(1-100);采用多线程处理提升转换速度;自动处理透明通道;提供命令行和交互式两种使用方式。脚本会自动创建输出目录,保持原文件名仅修改扩展名,并显示详细的转换进度和结果统计。安装只需"pip install Pillow",使用简单高效,适合需要批量转换图片格式的场景。 阅读详情

使用 python 压缩 png 图片,高达 80% 压缩率,肉眼无差异(一):为什么不用 pillow库.md

在网上有很多使用 python 的 pillow 库进行图片压缩的教程,使用简单,但是压缩效果存在明显的色彩不自然,这是因为 pillow 库采取的压缩算法没有优化的问题。

这个系列实现一款简单的压缩工具,使用 pngquant 有损压缩,压缩率高达 80%, 而且压缩后的图片没有明显差异。

免费领取Python自动化学习资料  工具,面试宝典面试技巧,加QQ群,785128166,群内还会大佬技术交流

开发目的

我经常使用图片。公众号文章发文也好,还是生活中要使用素材。图片是一种比文字更加直观的载体。

但是图片更加占用带宽,很多软件都对图片有大小限制。图片太大也会影响加载速度。

我试过几款图片压缩工具,比如 tinypng 和 tinyjpg 非常好用,体验也非常棒。 但是它存在几个局限的地方:

  • 1, 每次不能超过 20 张图片,因为 tinypng 是一个 web 网站,一次上传太多势必影响 速度和服务器压力;

  • 2,不能控制压缩比例,这一点 compressjpeg.com 做的很好,可以对每一张图片进行控制

  • 3,写文章的时候我 markdown 用得非常多,所以我希望在压缩的时候顺便上传到图床。

所以希望自己能做一款简单好用的图片工具,顺便定制一些自己常用的功能。

初步设想

我的初步设想是这样的:

1, 先通过命令行的形式来使用,非常方便,后面如果有需求再写界面。

picom 图片名称.jpg
复制代码

这条命令可以对图片进行智能压缩。格式为原来的格式,生成的新图片名字为 图片名称_picom.jpg

2,指定新文件名

picom name.jpg -o new_name.png 
复制代码

图片的格式也将根据新的文件名称跟着变化

3,只指定格式

picom name.jpg --format png
复制代码

图片指定为新的格式,但是文件名还是默认的。

4,裁剪大小

picom name.jpg --size normal
复制代码

图片将被裁剪成正常大小,可以设置几档常用的

5,裁剪指定具体大小

picom name.jpg --size 920*520
复制代码

6, 上传到图床

picom name.jpg --upload
复制代码

上传到图床以后,返回图床地址。图床的地址用什么形式保存还在思考。

可能涉及的知识和库

  • click 命令行工具

  • subprocess 子进程管理工具

  • pillow 库使用

  • pngquant (一个png图片有损压缩)

  • mozjpeg

  • optipng (png 无损压缩)

  • python 如何调用 c 代码

  • requests 库和 aiohttp / aiofile 库的使用

尝试使用 pillow 库进行图片压缩

pillow 是 python 处理图片的一个非常厉害的库 , 带有图片压缩的功能。

我先后尝试使用 pillow 的以下 API 对图片进行压缩,得到的结果不是很好。

  • save(quality=50)

  • save(optimize=True)

  • quantize()

  • convert("RGB")

1,quality 参数

save 方法当中的 quality 参数只适合用在 jpg 格式上,通常 80 左右的质量不会有明显的感觉。 用在 png 格式上无效,但是也不报错。image.png

2,optimize 参数

optimize 参数直接压缩没有明显效果。image.png

3,quantize 方法

quantize 是主要用到的压缩优化函数,在 png 格式压缩上,能减少 70% 左右的空间,但是颜色差异明显。

image.png

image.png

这是压缩后效果对比:quantize effect.jpg

4, convert 方法 通过把 png的RGBA 格式转化成 RGB 格式,可以减少大约 20% 的大小

5,PNG 以 jpg 格式保存

先通过 convert 方法转成 RGB 格式,然后另存为 jpg 格式,图片效果没有明显减弱,但是大小迅速减少。image.png

结论(免费领取Python自动化学习资料  工具,面试宝典面试技巧,加QQ群,785128166,群内还会大佬技术交流)

pillow 目前不太适合做 PNG 图片压缩处理,jpg 可以作为备选。 pillow 的主要应用场景可以用在灰度转化,尺寸控制方面,这些功能等把核心的压缩问题解决以后再加。

参考资料

Python编程:实现图片压缩算法(附完整代码) 首先,为了实现图片的压缩,我们需要使用到Python中的PIL库。然而,高清晰度的图片会占用大量的存储空间和网络带宽,极大地影响了用户的体验。因此,如何实现对图片的压缩成为了一个重要的问题。本文提供的Python图片压缩算法可以有效地减小图片的存储空间和网络带宽占用,同时保证图片的质量。接下来,根据图片的大小和分辨率设置合适的参数,使用。本文将介绍一个基于Python语言实现的图片压缩算法,并提供完整的源代码。最后,我们在代码的main函数中指定原图片路径和压缩后的图片路径,调用。方法保存压缩后的图片。 阅读详情

相关推荐

优化NEXYS A7开发板(Xilinx Artix-7)Microblaze核的FLASH读写性能实战

本文针对NEXYS A7开发板(Xilinx Artix-7)上Microblaze核读写FLASH速度慢的问题,提供了系统性的优化实战指南。通过深入分析SPI控制器配置、Flash指令模式选择、Microblaze核的Cache与硬件加速器优化,以及程序运行位置(BRAM vs DDR)的调整,有效将FLASH读写性能从“龟速”提升至接近理论峰值。文章结合实测数据,为FPGA嵌入式开发者提供了清晰的性能瓶颈分析与解决方案。

carrot的博客 256

python 压缩png图片

下载pngquant 解压后获取pngquant.exe绝对路径 import os import platform def pngquant(src_image, dst_image): if os.path.isfile(src_image) and os.path.splitext(src_image)[1] == '.png': # 指定文件后缀 cmd = 'D:\Tools\pngquant\pngquant.exe --force --skip-if-large

nongcunqq的博客 696

手把手教你排查libstdc++.so.6版本问题:从GLIBCXX缺失到完美解决

本文深入解析Linux系统中常见的GLIBCXX版本缺失问题,以`ImportError: /lib/x86_64-linux-gnu/libstdc++.so.6: version 'GLIBCXX_3.4.29' not found`为例,从动态链接原理入手,提供使用`strings`和`find`命令的诊断方法,并详细对比了四种解决方案的优缺点。文章重点推荐通过设置`LD_LIBRARY_PATH`或更新系统库的安全策略,并最终建议使用Docker容器化技术实现环境依赖的根治与统一管理。

j7k8l的博客 300

python PIL 读取jpg与png的坑

jpg存取是有一个压缩与解压的过程的,其中的一些只会失真(比如存放01二制图像后,读取时会出现01中间值。)而png无损存储,存多少读多少。在一些需要精确值计算边界等情况下很重要。

Ma_tthew的博客 962

Petalinux 2021.2 下 Qt组件编译报错?手把手教你修改bb文件搞定qt3d/qtquickcontrols2

本文详细解析了Petalinux 2021.2环境下Qt组件(如qt3d、qtquickcontrols2)编译报错的解决方案。通过修改bb文件或使用bbappend文件覆盖,有效解决`petalinux-build --sdk`命令执行时的源码获取失败或哈希校验不匹配问题,并提供验证与调试技巧,帮助开发者快速修复构建流程中断问题。

weixin_29188997的博客 215

28、解耦控制与晶圆表面缺陷模式识别

本文介绍了两种不同领域的技术方法:基于端口受控哈密顿(PCH)的三水箱液位系统解耦控制方法,以及基于无监督学习的晶圆表面缺陷模式识别方法。前者通过能量整形实现系统解耦与稳定控制,具有良好的抗干扰性和鲁棒性;后者采用无监督预训练与分类微调两阶段策略,利用WaUSM采样方法提升特征提取能力,在WM-811K数据集上实现了先进的分类性能。文章对比了两种方法的核心技术与优势,并探讨了其在工业控制与半导体制造中的应用前景及未来发展方向,为相关领域的研究与实践提供了有价值的参考。

git9versioner的博客 75

机器学习实战——PCA实现图像压缩

1.主成分分析概述 主成分分析是最为简单粗暴的一种数据降维方式,顾名思义就是找到数据中最为主要的方面,用这些方面来替代原始数据。具体来说,假设我们有一个具有n维特征的数据集,共有m个样本点,我们希望将这m个样本的特征维度从n维降到b维,希望b维数据尽可能的替代原始数据集。 其中最为重要的因素就是如何保证减少维度后数据损失尽可能的小 如下图所示,我们试图将二维数据降到一维,图中列出两个维度PC1和P...

qq_43747776的博客 3936

ZYNQ PL通过EMIO ETHE1外接PHY由GMII转RGMII

1,设置EMIO方式引出ETHE1 2,从GMII过度到RGMII GMII: 发送 gmii_tx_clk gmii_tx_d[7:0] gmii_tx_en gmii_tx_er 接收 gmii_rx_clk gmii_rx_d[7:0] gmii_rx_dv gmii_rx_er RGMII: 发送 tx_clk tx_d[3:0] tx_ctrl 接收 rx_clk rx_d[3:0] rx_ctrl 首先数据总线从时钟单边沿采样8bit转变为了双边沿采样4bit,从88E1

wangjie36的博客 1万+

python图片压缩不失真_使用 python 压缩 png 图片,高达 80% 压缩率,肉眼无差异(一):为什么不用 pillow库.md...

在网上有很多使用 python 的 pillow 库进行图片压缩的教程,使用简单,但是压缩效果存在明显的色彩不自然,这是因为 pillow 库采取的压缩算法没有优化的问题。这个系列实现一款简单的压缩工具,使用 pngquant 有损压缩,压缩率高达 80%, 而且压缩后的图片没有明显差异。系列文章:开发目的我经常使用图片。公众号文章发文也好,还是生活中要使用素材。图片是一种比文字更加直观的载体。但...

weixin_39974400的博客 1468

微信公众号 - 解决报错 “err_msg“:“system:access_denied“,微信环境浏览器真机使用微信支付、微信授权登录、分享朋友圈转发好友报错system:access_denied

微信公众号,微信网页,手机h5网页,微信报错,system:access_denied,微信支付,提示报错,微信登录授权报错,微信朋友圈分享,微信转发,WeixinJSBridge,微信环境下,微信内置浏览器,微信公众号项目报错system:access_denied,如何解决,invoke(),API调用后出现报错,微信内部H5 WeixinJSBridge.invoke system:access_denied,使用微信jssdk时报access_denied错误,还是报错,真机运行,真机调试api返回

🏆 前端领域优质创作者 1万+

JavaFx 教程

JavaFx 教程

2012年开始工作,全栈开发老兵,目前已是一个老师,分享这么多年的心得体会 784

Python利用PCA压缩图片

Python利用PCA压缩图片 参考 Python利用PCA对图片进行降维处理 PCA降维 维度 样本数 feature数 1、python代码实现PCA 这里先将1280的1D向量转变成2D图片之后,再进行PCA降维处理(但是这么做不是很科学,因为转2D后,同一列的数据实际含义是不同的) from sklearn.decomposition import PCA '''PCA对图像进行压缩''' #参考 https://blog.csdn.net/u010687164/article/details

qq_33934427的博客 3899

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

python像素处理_从零开始学Python - 第026课:用Python处理图像

入门知识颜色。如果你有使用颜料画画的经历,那么一定知道混合红、黄、蓝三种颜料可以得到其他的颜色,事实上这三种颜色就是美术中的三原色,它们是不能再分解的基本颜色。在计算机中,我们可以将红、绿、蓝三种色光以不同的比例叠加来组合成其他的颜色,因此这三种颜色就是色光三原色。在计算机系统中,我们通常会将一个颜色表示为一个RGB值或RGBA值(其中的A表示Alpha通道,它决定了透过这个图像的像素,也就是透明...

weixin_39731916的博客 442

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

python 图片压缩二 Pillow

利用Pillow来进行图片压缩 代码如下: from PIL import Image import os from time import strftime, localtime # 打印当前时间 def printTime(): print(strftime("%Y-%m-%d %H:%M:%S", localtime())) return def get_size(fi...

u012275249的博客 1404

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

使用 python 压缩 png 图片,高达 80% 压缩率,肉眼无差异(二):使用 pngquant 实现图片压缩

使用 python 压缩 png 图片,高达 80% 压缩率,肉眼无差异(二):使用 pngquant 实现图片压缩 在网上有很多使用 python 的 pillow 库进行图片压缩的教程,使用简单,但是压缩效果存在明显的色彩不自然,这是因为 pillow 库采取的压缩算法没有优化的问题。 这个系列实现一款简单的压缩工具,使用 pngquant 有损压缩,压缩率高达 80%, 而且压缩后的图片没有明显差异。 免费领取Python自动化学习资料 工具,面试宝典面试技巧,加QQ群,785128166,群.

测试小小小的博客 1243

pythonpillow 图像压缩_django在保存图像的同时压缩图像示例代码详解

假设我们有一个非常简单的Post模型,它将是一个图像及其描述,from django.db import modelsclass Post(models.Model):text = models.TextField()image = models.ImageField(upload_to='images/')但是我们要优化图像大小,这将由我们Post的image字段指出。 这样做有充分的理由-它有...

weixin_34690611的博客 472

使用 python 压缩 png 图片,高达 80% 压缩率,肉眼无差异(四):使用 requests 库上传

使用 python 压缩 png 图片,高达 80% 压缩率,肉眼无差异(四):使用 requests 库上传 在网上有很多使用 python 的 pillow 库进行图片压缩的教程,使用简单,但是压缩效果存在明显的色彩不自然,这是因为 pillow 库采取的压缩算法没有优化的问题。 这个系列实现一款简单的压缩工具,使用 pngquant 有损压缩,压缩率高达 80%, 而且压缩后的图片没有明显差异。 免费领取Python自动化学习资料 工具,面试宝典面试技巧,加QQ群,785128166,群内还会.

测试小小小的博客 366

第2章: 图像基础操作

本章将详细介绍 Pillow 中常见的图像基础操作,包括图像的打开、保存、裁剪、缩放、格式转换等基本功能。

一名全栈开发工程师 835

python 图片处理

调整后图片: enhancer_image = enhancer.enhance(0)# 0生成黑白图像。原图: enhancer_image = enhancer.enhance(1)将一张图调整大小后贴在另一张图片上。原图效果与调整后图片对比。调整图片透明度的函数。

weixin_44568609的博客 775

python使用pillow生成纯透明png图片

python使用pillow生成纯透明png图片

Good Luck 1775

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

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

Paper_Sheep的博客 1万+

Pillow(PIL)入门教程(非常详细)

文章目录相关资源教程特点读者&阅读条件Pillow是什么Pillow版本支持Pillow库特点1) 支持广泛的文件格式2) 提供了丰富的功能3) 配合GUI工具使用Pillow的下载与安装pip包管理器安装二进制包安装Anaconda安装Pillow创建Image对象open()new()Pillow Image对象属性1) size:查看图像的尺寸2) format:查看图片的格式3) readonly:图片是否为只读4) info:查看图片相关信息5) mode:图像模式Pillow图片格式转换

qq_41854911的博客 3万+

PYTHON 自动化办公:更改图片后缀

在之前的文章中,介绍了图片的压缩技术,这里讲解如何利用python批量将图片改为指定后缀的格式。当然,也可以为深度学习批量更改文件后缀,例如在分割中,可能需要img和mask的图片名称完全一致等等PYTHON 自动化办公:压缩图片(PIL)_image save quality图像压缩-优快云博客文中使用的库函数是python的PIL库函数(pillow),安装如下代码中会有一个常见图片后缀的列表,为了后面的使用,如果使用的图片后缀不在里面,可以自行添加。

Henry的博客 1421

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

I am using python 3 and latest version of openCV. I am trying to resize an image using the resize function provided but after resizing the image is very distorted. Code :import cv2file = "/home/tanmay...

weixin_28884811的博客 2650
上一篇: 听说你不会Python Flask 框架???2 个案例带你迅速入门 Python Flask 框架
下一篇: 使用 python 压缩 png 图片,高达 80% 压缩率,肉眼无差异(二):使用 pngquant 实现图片压缩
测试小小小
博客等级 码龄6年 265粉丝 364原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值