图片压缩之PNG

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): 阅读详情

PNG(Portable Network Graphics) 是一种大家经常使用的位图格式。

PNG 的特点

  • 位图
  • 支持半透明 (BMP不支持,JPEG不支持,GIF不支持,TIFF支持)
  • 支持无损压缩 (BMP不支持,JPEG支持,GIF不支持,TIFF支持)
  • 不支持动画 (A-PNG没有得到广泛应用,GIF是事实标准)
  • 不支持有损压缩, 确切地说,是没有可调整的质量设置。(JPEG支持,WebP支持)

PNG 的用途

  • 有透明度的图标
  • 有透明度的界面元素,如按钮,背景
  • 对图片尺寸不敏感的一般用途

PNG 的压缩

PNG-8 压缩

虽然 PNG 的自带无损压缩使它比 BMP 和 TIFF 已经「聪明」了很多,但对于网络传播仍然嫌大。PNG-8 是唯一可行的压缩方法。


大家可能立即想到的就是 Photoshop 自带的 PNG-8 压缩。

它的原理是缩减图片的色彩空间,8位就是2的8次方种颜色,也就是256色(或更少)。对于一般的按钮和界面图标,可能只有几种颜色;但对于照片来说,256色肯定完全不够用。为了能显示过渡色,有两种办法来欺骗眼睛。一种是 Diffusion, 有一点像点彩画的做法,用两种相近颜色的来拼凑。它的参数是 Dither,Dither参数越大,混合得越均匀,但文件也会变大。


另外一种就是用图案,看上去不太自然,现在很少用。

Photoshop 自带的 PNG-8 压缩有严重的缺点,就是它的透明只能全透明,不能半透明。虽然这样的格式支持广泛,包括 IE 6 都支持。但也大大限制了 PNG 的使用范围。

透明PNG的压缩

如果不考虑 IE6 的话,又希望在保留透明度同时压缩大小,那么好消息是还可以用第三方工具,在 Mac 上有 ImageAlpha ,网页上有 TinyPNG 。它的原理是让 PNG-8 的 256 色中包含透明色。

可以用的压缩工具:

压缩参数

这些库都有很多参数可以调节。有兴趣的同学可以去亲自尝试一下。我知道你们还是想看现成的结果。


原大 94KB, 无压缩 12KB, pngQuant 压缩后 5KB 几乎无变化, WebP压缩后 3KB 有明显瑕疵。

首先,用 ImageMagick 把图标改小:这里附加了一点锐化和高级的重采样算法,可以保证图片压小了之后清晰。用默认的算法有时图片会糊,但这样会稍微增加计算量。

convert ${input} -resize 68x -unsharp 0x1+0.3 -filter Lanczos ${out}

然后,用 pngquant 把PNG压缩:

pngquant -f --speed 1 --ext opt.png ${input}

如果嫌压缩的机器太闲,最后还可以用PNGOut压缩掉10%左右:

pngout -ks -f6 ${input}

要用 WebP 吗?

WebP 是谷人希 (谷歌!人类的希望!) 推行的自造轮子,它的特点是,支持半透明的有损压缩,像是 PNG 和 JPEG 的杂交品种。技术小白鼠看到 Spec 容易流口水,也容易尝试使用,因为它号称可以比 png 小 45%,比 JPEG 小 30% 什么的。

WebP lossless images are 26% smaller in size compared to PNGs. WebP lossy images are 25-34% smaller in size compared to JPEG images at equivalent SSIM index.

但我不建议大规模使用,原因无非:

  • 支持差。Chrome 当然能用,但包括 Photoshop 在内的大多数程序打不开。
  • 压得慢。亲测。人家可能用了高级算法,但对于服务器来说,这点很蛋疼。
  • 逻辑复杂。和理想不同,为了万无一失,你需要两套图片。一套 WebP,一套普通的 PNG 或者 JPEG。这就要压两次,还要存两次,还要加判断的逻辑。
  • 先把手头的 PNG 和 JPEG 压好再说吧!
    不就是为了让图小一点吗,你已经试了所有的办法了吗?压缩参数都优化过了吗?你用 WebP 默认的参数去压,也不会比别人优化过的 PNG 和 JPEG 参数效果好、文件小的。把参数吃透,压到极限,你还觉得文件太大?

其实除了 WebP,还有类似 JPEG 2000 之类的轮子从来就没有推开,我悲观的认为,现有的格式已经足够好,新格式都没有极其显著的优越性,而大家的网速还在提升,带宽成本在下降。于是它们只能算生不逢时吧。

实现高效PNG图片压缩:PNGQuant工具实践指南 htmltable {th, td {th {pre {简介:PNG图片压缩工具旨在优化PNG格式图像,实现减小文件大小的同时保持图像质量。PNGQuant作为该领域的知名工具,通过色彩量化技术有效减小PNG文件的存储空间,同时尽量减少视觉上的损失。压缩工具包包括执行程序PNGoo.exe、readme.txt说明文件和libs依赖库文件夹。用户通过简单的操作步骤可以实现PNG图片的压缩处理。适当的压缩可以节省存储空间,但需注意过度压缩可能带来的颜色失真问题。 阅读详情

相关推荐

告别爆显存!手把手教你为ComfyUI+华为Atlas 300I Duo配置wan2.1视频生成工作流(含CPU-VAE参数)

本文详细介绍了华为Atlas 300I Duo与ComfyUI的深度适配实战,重点优化wan2.1视频生成工作流。从硬件散热改造到软件栈配置,再到ComfyUI专项优化,提供完整的解决方案,显著提升视频生成效率与稳定性,特别适合需要高效文生视频的应用场景。

weixin_26812607的博客 461

pngquant

pngquant pngquant是一个命令行实用程序和一个用于有损压缩PNG图像的库。 这种转换大大减少了文件大小(通常高达70%),并保持了alpha透明度。生成的图像与所有web浏览器和操作系统兼容。 特性 使用矢量量化算法组合生成高质量的调色板。 独特的自适应抖动算法,比标准的Floyd-Steinberg增加的图像杂质更少。 易于与shell脚本、gui和服务器端软件集成。...

xuefujin的博客 4354

支付宝H5支付唤醒协议全解析:从alipays://到动态orderSuffix的抓取与拼接

本文深入解析支付宝H5支付唤醒协议,从alipays://协议设计到动态orderSuffix参数的抓取与拼接,详细介绍了支付宝H5支付的底层机制。内容包括协议架构剖析、动态令牌生成与捕获、浏览器兼容性解决方案以及安全机制设计,为开发者提供全面的技术指南和实践建议。

weixin_27972919的博客 3493

【亲测免费】 推荐开源项目:pngquant —— 高效的PNG压缩工具

在数字图像的世界中,文件大小往往是影响网站性能和用户体验的关键因素。这就引出了我们今天的主角——pngquant,一个高效且质量出色的8位PNG压缩工具,能够将原本的24/32位PNG文件显著减小60%-80%,同时保持完整的透明度支持。 ## 项目介绍 pngquant 是一款官方认可的命令行工具,它可以批量处理多个PNG图片,或通过Unix风格的管道进行流式处理。这个库背后的技术是基于高性...

gitblog_00022的博客 1417

Unity3d游戏开发工程师笔试题学习

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、学习背景二、错题记录2.读入数据总结欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 前言 提示:这里可以.

m0_54231818的博客 5464

深度学习-算法工程师岗位面试常见问题及解答

一、相关的问题 深度学习优化学习方法(一阶、二阶) 一阶方法:随机梯度下降(SGD)、动量(Momentum)、牛顿动量法(Nesterov动量)、AdaGrad(自适应梯度)、RMSProp(均方差传播)、Adam、Nadam。 二阶方法:牛顿法、拟牛顿法、共轭梯度法(CG)、BFGS、L-BFGS。 自适应优化算法有哪些?(Adagrad(累积梯度平方)、RMSProp(累积梯度平方的滑动平均)、Adam(带动量的RMSProp,即同时使用梯度的一、二阶矩))。 梯度下降陷入局部最优有什么解决

nobles007820的博客 2924

python pngquant 批量压缩png图片

python pngquant 批量压缩 一个文件夹里所有png图片,或者一个文件夹里的所有一级子文件夹里的所有png图片

weixin_50624398的博客 1563

OpenClaw实战四|内容创作全流程AI助理:自动撰稿+智能剪辑+多平台发布,一人顶一个内容团队

AI替代的是「写稿、剪辑、发布」这种流水线工作,真正让你解放出来,去做选题、创意、人设、变现这些高价值的事。OpenClaw这套内容创作全流程AI助理,最大的价值不是「帮你发内容」,而是让一个人,拥有一个内容团队的产能。不管是个人博主、小团队,还是企业新媒体,都能用零代码的方式,快速搭建属于自己的自动化内容矩阵。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 588

PNG 图片压缩原理解析

原文地址见文末,感谢原作者。 Table of Contents 背景 什么是PNG PNG类型 PNG图片数据结构 PNG的压缩 压缩(Compression) 结语 背景 今天凌晨一点,突然有个人加我的qq,一看竟然是十年前被我删掉的初恋。。。。 因为之前在qq空间有太多的互动,所以qq推荐好友里面经常推荐我俩互相认识。。。。谜之尴尬。 同意好友申请以后,仔细看了她这十...

RToax 1913

【NI Multisim 14.0原理图设计基础——元器件分类】

电阻(RESISTOR):该元器件栏中的电阻都是标称电阻,是根据真实电阻元器件而设计的,其电阻值不能改变。 排阻(RESISTOR PACK):相当于多个电阻并列封装在一个壳内,它们具有相同的阻值。 电位器(POTENTIOMETER):即可调电阻,可以通过键盘字母动态调节电阻,大写表示增加电阻值,小写表示减小电阻值,调节增量可以设置。 电容(CAPACITOR):所有电容都是无极性的,不能改变参数,没有考虑误差,也未考虑耐压大小。 电解电容器(CAP_ELECTROLIT):所有电容都是有极性的,“+”极

RL2698853114的博客 4万+

pytorch搭建SSAE实现预测分类代码模板完整代码

pytorch搭建SSAE实现预测分类代码模板完整代码

323

屌丝的眼泪,因为错过的初恋,才搞清楚PNG图片压缩原理

背景 今天凌晨一点,突然有个人加我的qq,一看竟然是十年前被我删掉的初恋。。。。 因为之前在qq空间有太多的互动,所以qq推荐好友里面经常推荐我俩互相认识。。。。谜之尴尬 同意好友申请以后,仔细看了她这十年间所有的qq动态和照片。 她变美了,会打扮了,以前瘦瘦的身材配上现在的装扮和妆容,已经是超越我认知的女神了。 而我依然碌碌无为,逐渐臃肿的身体加上日益上扬的发际线,每天为生活操劳和...

whale_kyle的博客 8983

ARM Linux工控板+C# .NET Core:倍福ADS协议轻量化工业控制(附跨平台部署代码)

某自动化设备厂的倍福PLC控制系统曾依赖传统x86工控机:单台设备需配备1台Intel i5工控机(成本约8000元),功耗30W+,且Windows系统稳定性受工业环境干扰(如电磁辐射导致蓝屏)。更棘手的是,设备需部署在产线边缘(空间狭小),x86工控机的体积(4U机架)和散热需求(风扇噪音)难以适配;而多设备部署时,高硬件成本和高功耗导致年运维成本超20万元。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 954

png图片压缩后黑底问题解决

问题到这基本就清晰了,黑底的原因是png压缩过程中alpha通道值没了,用黑色补充,为什么alpha通道会丢失呢?因为按jpg处理了,所以我们只需要处理png时,识别到真实png,保证其后缀名为.png即可。判断文件类型为jpg还是png,对后缀名不对的,强行补充.png等。用白的背景重画,就会有类似如下问题:左边为原图,右边为重绘后的图。压缩,保证压缩率,但是不修改目标文件后缀名。图片开始压缩的大小,对较小的。两个字节,容易混淆,如果是补。支持的文件后缀,以逗号分割。压缩必要不大,可能是无用功。

coder_xia的专栏 3171

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

PNG图片压缩原理解析

背景 今天凌晨一点,突然有个人加我的qq,一看竟然是十年前被我删掉的初恋。。。。 因为之前在qq空间有太多的互动,所以qq推荐好友里面经常推荐我俩互相认识。。。。谜之尴尬 同意好友申请以后,仔细看了她这十年间所有的qq动态和照片。 她变美了,会打扮了,以前瘦瘦的身材配上现在的装扮和妆容,已经是超越我认知的女神了。 而我依然碌碌无为,逐渐臃肿的身体加上日益上扬的发际线,每天为生活操劳和奔波,还穷。 ...

weixin_34411563的博客 805

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

png图片压缩原理解析

什么是PNG PNG的全称叫便携式网络图型(Portable Network Graphics)是目前最流行的网络传输和展示的图片格式,原因有如下几点: 无损压缩:PNG图片采取了基于LZ77派生算法对文件进行压缩,使得它压缩比率更高,生成的文件体积更小,并且不损失数据。 体积小:它利用特殊的编码方法标记重复出现的数据,使得同样格式的图片,PNG图片文件的体积更小。网络通讯中因受带宽制约,在保证图片清晰、逼真的前提下,优先选择PNG格式的图片。 支持透明效果:PNG支持对原图像定义256...

jacke121的专栏 4747

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

如何压缩png图片的大小?png图片怎么压缩?

我们在上传图片的的时候经常会出现png图片体积过大上传失败的情况,那么,当我们遇到这种情况的时候应该如何压缩png图片的大小?给大家推荐一款压缩图的png压缩工具,非常的简单好用,具体的操作步骤如下: 1、首先上传你需要压缩的图片。 2、然后选择需要的尺寸、宽、高、压缩等级等参数。 3、压缩完成后可以查看预览,如果没有问题,点击保存图片,即可使用。 以上就是png格式图片的压缩步骤了,并且还支持多张图片同时压缩功能。另外,压缩图还支持图片改大小、证件照制作、转格式、修改分辨率等功能,想要了解更多图片编辑处理

lapuyelulpyl的博客 745

【OpenCV】PNG图片压缩方法

以下方法中只有方法二为.NET调用,其它均为C++程序实现。 方法一: 利用OpenCV库中的imwrite函数或者cvSaveImage函数实现。 (1)Imwrite vector<int>CompressionPara; CompressionPara.push_back(CV_IMWRITE_PNG_COMPRESSION); Compression...

R_W_zhang的博客 3046

PNG图片压缩原理

什么是PNG PNG的全称叫便携式网络图型(Portable Network Graphics)是目前最流行的网络传输和展示的图片格式,原因有如下几点: 无损压缩:PNG图片采取了基于LZ77派生算法对文件进行压缩,使得它压缩比率更高,生成的文件体积更小,并且不损失数据。 体积小:它利用特殊的编码方法标记重复出现的数据,使得同样格式的图片,PNG图片文件的体积更小。网络通讯中因受带宽制约,在...

Jack huang 的技术笔记 599

如何在线压缩png图片?png压缩图片大小的方法介绍

但是,在进行PNG图片压缩时,也需要注意相关问题,如画质损失、压缩格式的选择和压缩比例的控制等。1. 网络图片分享:当用户想在社交媒体平台上分享自己拍摄的PNG图片时,压缩PNG图片可以让图片更快地上传到网络平台,并且更好地兼容各种设备。上传图片后,设置好压缩等级,默认为70,压缩等级越小,处理后的图片越小,压缩等级越大,处理后的图片越清晰,最后下载图片就可以了。2. 提高页面加载速度:压缩后的PNG图片可以更快地加载,特别是在网络环境较差的情况下,可以极大地提升网页的加载速度。

soul_610的博客 639

使用pngquant压缩png图片

说到png图片压缩,可能很多人知道TinyPNG这个网站。但PS插件要钱(虽然有破解的),Developer API要连到他服务器去,不提网络传输速度,Key也是有每月限制的。           但是貌似tinyPNG是使用了来自于 pngquant 的技术,至少在 http://pngquant.org/ 中是如此声称的:TinyPNG and Kraken.io — on-line in

Piao_Polar的专栏 9879

怎么压缩png图片200k?怎么压缩png图片?

2、选择图片压缩,上传png图片,设置图片期望大小为200k。若压缩没有达到想要的效果,可以重新选择压缩等级进行再次压缩。压缩图的图片压缩成指定大小功能三步完成压缩png图片到想要的大小,一起来看看怎么做吧。这样,我们就可以把png图片压缩到200以下了,如果需要将png图片转成其他格式。1、打开压缩图首页选择图片压缩指定大小。3、压缩完成后,保存图片。...

soul_610的博客 421
上一篇: 图片占用内存计算方法
下一篇: Android中如何查看内存
cbbbc
博客等级 码龄15年 609粉丝 37原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值