问题

西安电信一码通项目此前报道中提到「两天两夜把 1m 图片优化到100kb」,图像压缩技术难度是怎样的?

回答
“两天两夜把 1MB 图片优化到 100KB” 这个说法虽然有些夸张,但也生动地体现了在实际项目中,将一张较大尺寸的图片压缩到更小的文件大小,并保持可接受的视觉质量,是一项充满挑战的任务。图像压缩技术难度主要体现在以下几个方面,我会尽量详细地解释:

一、 图像数据本身的复杂性

首先,我们要理解一张图片到底包含什么信息。一张 1MB 的图片,通常意味着它是一个数字化的视觉表示,其底层数据是由大量的像素点组成的。每个像素点又可能包含颜色信息(如 RGB 值),甚至透明度信息(Alpha 通道)。

像素数量(分辨率): 图片的分辨率越高,像素点越多,数据量自然越大。一张高分辨率的图片,即使颜色信息简单,其基础数据量也可能很大。
颜色深度: 每个像素有多少位(bit)来表示颜色?常见的有 24 位(8 位 RGB)或 32 位(8 位 RGBA)。位越多,颜色越丰富,但数据量也越大。
颜色冗余: 现实世界中的图像,相邻的像素点颜色通常是相似的,甚至完全相同。这种相似性是压缩的主要目标之一。
纹理和细节: 图片包含的纹理、细节、边缘等信息,往往对视觉感知很重要。压缩时如何保留这些关键信息,而不被模糊或丢失,是技术难点。

二、 压缩技术的核心挑战:无损 vs. 有损压缩

图像压缩主要分为两大类:

1. 无损压缩 (Lossless Compression):
目标: 在压缩过程中不丢失任何原始图像信息。解压缩后,图片与原始图片完全一致。
原理: 主要利用数据中的冗余性。例如,如果图片中有一大片相同颜色的区域,无损压缩会用一个更紧凑的表示方式来描述这个区域(如“重复 N 次颜色 C”),而不是存储每一个像素点的信息。常见的无损压缩算法有:
Huffman 编码: 为出现频率高的像素值或数据模式分配更短的编码,为出现频率低的分配更长的编码。
LZ 系列算法 (LZ77, LZ78, LZW): 通过查找和替换重复出现的字符串(数据模式)来达到压缩的目的。
游程编码 (RunLength Encoding, RLE): 用于压缩连续相同数据的序列。
难度:
压缩率有限: 对于包含大量细节、复杂纹理的图片,无损压缩的效果往往不显著。除非图片本身具有高度的重复性(如纯色背景的图),否则难以将 1MB 压缩到 100KB。
算法复杂度: 实现高效的无损压缩算法需要精妙的统计分析和编码策略。

2. 有损压缩 (Lossy Compression):
目标: 在压缩过程中丢弃一部分对人眼感知影响不大的信息,从而实现更高的压缩比。解压缩后,图片与原始图片可能存在微小差异,但通常肉眼难以察觉。
原理: 利用人类视觉系统的特性。我们的眼睛对某些类型的图像变化比其他类型更敏感。例如:
对颜色变化比亮度变化更敏感: 许多有损压缩算法会将彩色信息(色度)压缩得比亮度信息更厉害。
对高频细节比低频细节更敏感: 高频细节(如锐利的边缘)更容易被感知到,而平滑过渡的区域则不容易察觉细微变化。
核心技术:
离散余弦变换 (Discrete Cosine Transform, DCT): JPEG 等有损压缩格式的核心。它将图像块(通常是 8x8 像素)从空间域转换到频率域。这样,图像的信息被分解成不同的频率分量。
量化 (Quantization): 这是有损压缩中最关键的步骤。在 DCT 变换后,不同频率分量被分配不同的量化表。对量化表中数值较大的频率分量(通常是高频分量)进行更粗略的量化(即除以一个较大的数并取整),从而丢失信息。对量化表中数值较小的频率分量(低频分量)则进行更精细的量化,保留更多信息。 调整量化表的精度,是控制压缩比和图像质量的关键。
熵编码 (Entropy Coding): 在量化后,剩余的数据会经过无损压缩(如 Huffman 编码或算术编码)进一步压缩。
难度:
感知质量与压缩率的平衡: 这是最大的挑战。如何精确地“丢弃”对人眼不重要的信息,同时最大限度地保留“重要”的视觉特征,需要复杂的模型和算法。过度的量化会导致块状效应、模糊、振铃效应等明显失真。
算法的鲁棒性: 算法需要能够处理各种类型的图像内容,包括纹理丰富的、平坦的、有边缘的等等,并能根据内容自适应地调整压缩策略。
计算复杂度: DCT 变换、量化、熵编码等过程计算量较大,尤其是在处理高分辨率图像时。

三、 针对性优化和特定场景的挑战

“两天两夜”的说法暗示了这并非简单的套用一个通用压缩软件。可能涉及到以下更复杂的优化:

针对特定内容进行优化: 如果已知图片内容以人像为主,可以采用针对人脸特征进行优化的算法。如果图片是网页截图,可能包含大量纯色块和文字,需要不同于自然照片的压缩策略。
逐像素或逐区域的自适应压缩: 智能算法可以分析图像的局部特征,对不同区域应用不同的压缩参数。例如,对背景区域进行强力压缩,对人脸或重要文字区域进行更精细的处理。
多层压缩和预处理:
色彩空间转换: 将 RGB 转换到 YCbCr(亮度色度分离),并对色度分量进行下采样(如 4:2:0),这是许多有损格式的基础。
图像滤波和降噪: 在压缩前去除图像中的噪点,有时反而能提高压缩效率,因为噪点通常是随机分布的,难以压缩。
细节增强或锐化: 有时为了对抗压缩造成的模糊,可能会在压缩前或后进行一些锐化处理,但这又增加了复杂性,需要小心操作避免引入新的失真。
考虑目标平台和应用场景:
网页显示: 需要快速加载,所以压缩率很重要,但也要保证视觉效果。
移动端应用: 存储空间有限,网络带宽可能不稳定,对图片大小要求很高。
打印或专业用途: 对质量要求极高,压缩损失可能无法接受。
新型压缩技术: 除了传统的 JPEG、PNG 等格式,现在也有一些新的图像格式和编码器,如 WebP、AVIF、JPEG XL 等,它们在压缩率和图像质量上都有显著提升,但可能需要更复杂的实现和支持。

四、 “两天两夜”的可能含义

“两天两夜”这个时间跨度,很可能意味着:

1. 大量的实验和调优: 团队可能尝试了多种算法、参数组合,并反复评估结果。
2. 自动化脚本和工具链: 手动处理不可能完成如此任务,背后一定有强大的自动化工具来批量处理和评估图像。
3. 算法的复杂计算: 如果采用了非常精密的、计算量巨大的自适应压缩算法,确实需要较长时间来完成。
4. 人工复核和微调: 即使有自动化工具,对于关键图像也可能需要人工进行最终的视觉评估和微调。
5. 解决特定技术难题: 可能在某个环节遇到了预料之外的技术瓶颈,需要投入大量时间去攻克。

总结来说,将 1MB 图片优化到 100KB,如果仅仅是通用压缩,难度并非无法企及(比如一个 10:1 的压缩比)。但如果是在保持较高视觉质量的前提下,并且针对大量图片进行自动化且高效的处理,这就涉及到了对图像数据特性、人类视觉感知、多种压缩算法原理及其组合优化的深入理解和工程实现能力。这就像是把一件艺术品雕刻得更小,既要保持它的美感,又要去除不必要的“体积”。

网友意见

user avatar

压缩就是减肥。

1024kb 减到 100kb

你说,有多难吧

user avatar

配合去年年初铁路大连车务段的《全力攻关一昼夜,确保运输三十站》一文观看,味道更佳。

给不熟悉的小伙伴概括一下:

1.Flash早已宣布将于2021年1月1号正式停用;

2.大连某车站报告调度系统无法正常访问;

3.大连车务段技术人员如临大敌,开了一次又一次的会。

4.全力攻关一昼夜,最终所有车站的调度系统得以恢复。

5.恢复办法:安装低版本Flash Player。

相关连接:如何评价大连车务段现在车系统瘫痪,「全力攻关一昼夜」恢复 Flash 运行?

user avatar

首先,他们这个报道里面讲的压缩图片,不是指绿码的二维码图片。

根据网友抓包情况来看,二维码还是用的数据接口,然后在前端生成的。

所以他们这个压缩的图片应该是界面的logo图片或者背景图

其次,手机屏幕上展示的图片,只要不去放大看,根本不需要多高的分辨率,因为手机屏幕就这么大。即使是4k屏幕的手机,放个1080的图片你看起来也差不多。

如果是logo或者背景图,那么要求就更低,你在手机屏幕上看起来很正常的logo或者背景图,随随便便不超过100k是正常情况。

所以可以得出结论,这个报道就跟前些时盖章几亿次那个报道一回事。

user avatar

这句话约等于:“该技术团队用了两天两页的时间对饿了么app的 使用方法 进行技术攻坚,最终成功点了一份羊肉泡馍!”

user avatar

这个文案保守了,没有技术细节,突出不了难度。看我给编一个:

针对这个技术难题,我们查阅资料,尝试了多种图片压缩技术。

首先,我们选用了当下最主流的即时通讯工具:微信。我们利用该软件自带的截图技术,对图片进行了截取,图片从1M被压缩到了915k。效果并不是太好。经过研究发现,是我们在截图的过程中将图片缩放的比例设置成了200%,影响了压缩效果。因此我们将该参数调整到了75%,图片被压缩到了623kb,且图片重要细节都被保留,达到了令人满意的效果。

经过不断尝试,我们发现将图片的缩放参数设置为56%时,可以将图片压缩到509k,但距离我们的目标,500k,仍然有一些差距。但是当把参数下调时,图片的大小又会降到500k以下,始终达不到我们设定的标准值。我们对此反复调试,终于发现,当把缩放比例设置为49%时,截取出的图片刚好为500k。此时,我们已经持续工作了一天一夜。

但是第二天,任务依然艰巨。我们需要继续将图片进行压缩,达到“百k”级大小。老的方法已经不能用了,我们必须寻求新的突破。因此我们遍寻知网、sciencedirect、IEEE等学术网站,寻找当下最新的图片压缩技术。功夫不负有心人,终于在一篇来自嘉勒顿大学的论文中找到线索,有一款名为 adobe photoshop的小众软件可以实现对图片尺寸的快速调节。我们连夜联系论文的作者,希望能得到该软件的下载地址。但是对方始终没有回应。

“万事还要靠自己!”面对国外的技术封锁,我这样鼓励我们的技术人员。我们排除万难,继续搜索,终于在“百度网盘”中找到了该软件的压缩包。我们用了五个小时的时间对软件进行了解压、安装、破解等一系列装配工作。但是该软件界面是纯英文的,晦涩难懂的菜单栏和工具栏又成了摆在我们面前的一大难题。

“世上无难事,只要肯攀登!”在这一思想的指引下,我们一鼓作气,开始了漫长的翻译之旅。最终,我们的一位有着国内知名修图软件“美图秀秀”使用经验的技术人员发现了尺寸调节功能的打开方式,经过多组数值的尝试,终于将图片精准压缩到了100k。

此时,又一天一夜过去了。

经过此次克难攻坚,我们的技术人员,不但圆满实现了功能,还锻炼了自己搜索查找文献的技能、提高了阅读英文文献的水平、积累了安装并使用国外软件的经验以及开拓了图片处理领域的道路,将我国的图片压缩技术提升到“百k”水平,为我国的软件事业做出了突出贡献。

user avatar



user avatar

西安一码通长这样,页面就一个二维码,事实上二维码是一串字符,根本不用传输图片。我们平时扫个二维码就能上网、能支付、能跳转页面这些都是传的一个字符串,这个字符串可能是网址,可能是产品编号,可能是下载链接等。

西安一码通这个就是传输了一串字符然后在手机端生成的二维码,这个根本不用压缩,他这里说压缩到100K,这些二维码字符离1K都差的很远。


需要注意的是这里的二维码是系统返回的信息,系统崩溃应该是访问量过大造成,这个访问量是用户发出的请求信息,这个信息自然也是一个字符串,也不会大。服务器收到用户的请求信息后计算出一个解决,这个结果就是个很简单的运算甚至只是个查询,要求也很低。

那为什么还要宣传图片压缩呢?


原因就是这个入口界面,这里有图,下面还有资讯,图主要是这里的

抓包传输,确实会传一些图片,就是上面的那些图,很难想象最大的是快讯那张图,这么简单都87KB。

但是,这里要说但是了,这个只传输一次,然后就缓存在本地了,以后访问就不传输了直接本地加载,就像下图一样,我想西安市民不可能都是第一次访问吧?清缓存的应该也极少。


所以最大的问题,西安电信一码通的带宽到底是多少,感觉也没上云

user avatar

我不是搞IT的,所以我看了半天回答,终于搞明白,是某个题头大图片为1M,而不是健康码本身那个二维码。

我想二维码本身的传输应该并不可能挤爆带宽或者服务器,因为二维码与数字是可以互为转换的,传输数字,终端再展现为二维码就可以实现。(这段属于我胡诌,不懂这个)

咱们来说说别的。国家早就下令,一省一码,结束乱象。但通过这次西安出事,才发现西安这个码居然是个城市码。陕西自己还有个省码。

可见这个项目背后得有多大的势力,才能阻碍国家的命令特立独行,保留城市码。

然后就是价格的暴露,最终接单的是27万元。

平时大家层层剥皮,草草对付,赚的盆满钵满。只有碰到疫情、地震、洪水这种老天爷的检查,豆腐渣工程才会暴露出来。27万撑到现在才出事,也算对得起27万了。

user avatar

我没开发过这么复杂的软件哎,不懂这么高深的技术。

user avatar

国内尽是这种需求,那招个老头老太太干1天就完了。

为什么还要求35岁以下……

user avatar

嗯,作为互联网人说几句吧。怎么说呢,大概有这么几个槽点:


1 图像压缩不是什么难的技术

首先我们要确定这个图片是否可以被压缩。如果此处指的是一码通的二维码,那显然可以被压缩(因为二维码的分辨率并不需要很高);如果指的是广告位图片或者logo,都这时候了把这种图片干掉不更好么?

如果你自己打开电脑的画图板,将一张图片分辨率缩小,或者把图片从bmp转换为png jpg,这并不算是很难的事情;并且你会发现,二维码这么大的图片确实应该需要不到50k就可以了。


2 二维码图片应该在客户端生成,服务端应该只需要发送字符串给客户端

这是更加需要吐槽的地方。二维码字符串应该在服务端生成,这样传送给客户端时,实际响应请求大小应该是1k级别的。

客户端生成二维码的库应该是现成的。

所以我有点怀疑,原文里面说的真的是二维码吗?真的像是广告位或者logo图。


3 一码通崩溃的根因?

我们可以这样理解网络请求,一类是占用较大带宽的(例如视频,图片,直播),另一类是占用较大计算资源(例如生成实时的二维码)。

这两类的优化思路完全不同,文中说的针对的是前一类的优化。

我们假设西安1000w人口,有400w人需要在1小时内使用一码通。平均qps是1k,峰值期间假设突发10倍,也就是10k qps;按照文中图片压缩到100k来说,峰值带宽为1G。

怎么说呢,我的感受是10k qps的计算压力更大一些;在图片优化之前,带宽压力是10G,容量较小的机房确实有可能顶不住,但是大机房基本没问题(当然前提是你有足够的分发服务,比如nginx)。


4 缺少性能测试和容量评估

重要的事情说三遍,性能测试!性能测试!性能测试!

不过抛开技术来说,这里更有可能的是一个配合问题。即运营提出了大家集中使用一码通的要求,但这个诉求和风险并没有传递给技术人员,从而没有对此时系统所需的容量进行评估。

换句话来说,可能并不是没做性能测试,而是根本不知道自己要面对的压力是有多大。


当然,以上基本属于我的猜测,实际情况可能并不是这样,估计我们也是无从得知了。


ps:

我也是个西安人,实际上并不是在说老家的坏话,只是想从纯技术的角度说明一下我的理解。

目前这么多人赞我,受宠若惊,谢谢大家。

user avatar

这个事情,完全不是一些高赞回答说的这个事情。

西安电信好歹也是管着一个市的三大运营商,外包再弱,也弱不到给服务器给手机传一张1M的图片。

而且有人已经抓包验证过了。

一般来说,这种八股文章是办公室秘书写的。

秘书一般来说,不懂技术

但是,写文章还得出彩,一般来说,就会问下面要资料,这个资料最好有数字,显得有东西。

问题是,开发人员不会写文章,你非要,就给你编一个图片压缩,糊弄秘书。

办公室秘书不懂,你怎么给材料,我怎么写,最多文字通顺点。

这种笑话,就写出来了。

审稿的是办公室主任,他也不懂。

终审是领导,领导更不懂,看看文字好像没问题,这个东西就发出来了。


西安一码通崩溃,并不是这个图片的问题,图片在手机里面有,你下载APP的时候已经下载了,不用从服务器端再加载,除非APP自动升级。


西安一码通崩溃,无非数据库和网络的问题。一码通背后是一个数据库的查询比对,并发少,数据量少的时候,不是问题。

大家日常用,虽然1000多万人,但是在一秒钟内亮码做查询动作的时候,可能只有几万人,上下班高峰可能也就是几十万。

数据库里面一个人两次核酸,一共2000万条记录。

以前写的程序,网络的带宽,可能预留到百万并发。数据库优化也针对2000万条记录优化的差不多。能使用。


但是,到了集中亮码,全民多次核酸的时候。一个人10轮核酸,这是1亿条核酸记录,并发远不是几十万。而是几百万。

这个时候就崩了,而且很难短时间解决。

你开发一套新的,来不及。

旧的正在运行,升级了怎么切换?


当初开发这个东西,也是2020年疫情期间,做一个能用的,不一定草台班子,肯定是一个不太成熟的东西,也就是适应当时的情况。

这个东西,恐怕不止西安一码通。各地的都不好说。

1000万级别的大城市,搞多轮核酸,系统架构设计是否顶得住也难说。


这个事情,可以给各地提醒一下,遇到西安这个情况,需要怎么优化数据库,需要多少资源能顶住。

其实,12306能搞定,一码通应该是小问题,就是预留要想充分。

user avatar

看到文章后比较疑惑两点:

1.为啥一码通这种高并发应用会出现后端传图片的问题?还是1MB的高清图片?

2.到底传了什么重要的图片给前端?

然后就在手机上随便抓了个包——

打开 Stream ,模拟一般用户操作,点击西安一码通,分别点击查看健康码,查看核酸报告,然后查看抓包结果——


只发现了这些包含图片的响应,其中数据量最大的,就是这张图——

疑惑解开了,应该就是为了产品界面美观而从后端传了一些图片进来。

总体来说,这个事儿本身就是个迷惑行为,比如我们江苏的苏康码,打开就是你的健康码,功能单一,交互体验虽然说不上友好但简洁明了。

我在想,做这种超高并发的,应用场景复杂的应用不就应该秉承简洁明了稳定的宗旨吗?你为了界面美观搞了一大堆用不到的东西上去,不是脑子有毛病吗?

从工作经验上来看,这事儿可能就是产品牵头搞出来的,为了美观牺牲性能的典型问题;

再深一层说,可能就是为了满足领导们对界面美观的要求,而不得不牺牲研发诉求的问题。

以上都是我猜的。

总结出来的教训,就是以后但凡涉及到不熟悉不懂的领域,还是去请教懂的人吧·····

以上。

user avatar

有人抓包看过了,二维码是在客户端生成的。至于那个在服务器端原大小1M最后被压缩到100k传到客户端的图是什么,就不得而知了。


这东西的槽点不在于图片压缩问题。

服务器根据每个人的疫情防控信息生成了健康码,然后被开发人员费劲心思把健康码的图片压缩后传到了客户端;健康码被扫描后,其中包含的信息都在生成的一串字符串中,这个字符串包含了个人疫情防控信息。扫描健康码得到了字符串,即可快速得到个人防控信息。

那,为什么不直接向客户端发送字符串,由前端生成二维码呢?

user avatar

Logo和卡通图片不用svg,倒是去加班压缩jpg?jpg压缩需要加班?

战术上的勤奋不能掩盖战略上的懒惰,加班的自我感动不能掩盖低下的业务水平。

user avatar

难度大概是这样的:

       image_resize(...);//压缩图像,改变图像尺寸 sleep(100);/*睡眠0.1秒,在第2个版本删除这一句,以提升用户体验*/ sleep(100);/*睡眠0.1秒,在第3个版本删除这一句,以提升用户体验*/ sleep(100);/*睡眠0.1秒,在第4个版本删除这一句,以提升用户体验*/ sleep(100);/*睡眠0.1秒,在第5个版本删除这一句,以提升用户体验*/ sleep(100);/*睡眠0.1秒,在第6个版本删除这一句,以提升用户体验*/ sleep(100);/*睡眠0.1秒,在第7个版本删除这一句,以提升用户体验*/ sleep(100);/*睡眠0.1秒,在第8个版本删除这一句,以提升用户体验*/ sleep(100);/*睡眠0.1秒,在第9个版本删除这一句,以提升用户体验*/ sleep(100);/*睡眠0.1秒,在第10个版本删除这一句,以提升用户体验*/       

经过两天两夜后,终于把睡眠函数删掉了一半,系统流畅度极度提升,用户体验也很不错。

另外的一半先留着,以备不时之需,因为不知道什么时候领导又要优化。

user avatar

2583. 22万元

user avatar

我不禁好奇了,是什么级别的代码功底,需要用两天两夜?

我现在都还能翻出来我以前写的稀烂的图片压缩代码,也用不了两天两夜啊。。。。

而且手机上的软件,有几个敢在软件内部用1M大小的图片?

这也太吓人了。

感觉这是忽悠不懂行的人的工作总结。

还是说以前一码通完全没有做缓存,也没有做虚拟分发之类的东西,所有通信都是直来直往,突然一下高并发,就给搞崩了。然后不好解释....

user avatar

做过类似相关的程序。说一下,图片大小与一码通系统崩溃的因果关系。

讲这个之前,请注意两个概念,第一、客户端(手机端);第二、服务端

1、图片压缩主要是在哪里生成?

图片压缩并不是很难的事,不同格式的图片存在着各种压缩的方式。

以jpg格式的图片来说,运用有损压缩的时候,压缩比例大得惊人。这个找个PS,然后选择色盘,把颜色数量调小点。瞬间能看到效果。

因此优化图片并不是重点。

新闻公报中所说的图片大小,不知道指的是哪个图片?

按照通常的理解,图片主要是有两块。

第一、注册时候的身份证识别。

第二、二维码的生成。

如果存在身份证的识别,就需要把身份证图片上传到服务器端,然后在服务器端保存,这个图片大小影响巨大。

二维码的生成,二维码肯定是在服务器端生成的。图片的大小影响巨大。

如果二维码有100多K那完蛋了,太大了,没有必要。

大家随便找一张二维码,中间有logo的那种一般就10K左右的样子。

2、网络传输,尽量要求不传输图片

我以前从事过一个系统部分内容的开发。就是很多幼儿园,进幼儿园报道的时候,抓拍一下儿童的照片,然后把照片发到家长的手机里。

不发图片一点问题都没有,一旦发照片,很难做到及时推送。

因为幼儿园上学跟放学的时间太集中了。当时瞬间的操作,尤其是节假日的前一天。那个峰值非常恐怖。

回到一码通来,其中可能存在的服务端生成图片的部分,就是二维码了。

这种二维码如果是电信自己写的APP,可以在客户端直接生成,传输只需要传输少量的格式信息即可。

如果是微信小程序,那服务端生成的二维码,100K还是大了,还需要缩小。

3、测试

西安电信的一码通崩溃,我其实挺理解的。这个好比中国最牛的电子商务网站12306一样。

以前春运期间是日常的崩溃。

道理就是有大量的人涌入,服务器处理不过来。

不过值得特意说明的是:一码通项目跟图片压缩的关系不大。

因为当时使用的过程应该是不存在图片的上传。

因此,网络带宽不是主要问题。

主要问题是服务器的处理容量等。没有先做好压力测试。即便做过压力测试,也只能说没有达到现实的这种场景。

4、项目的金额与CDN

这种项目明显是外行领导内行,据说整个一码通的项目是30万块钱。

从程序架构来看,问题不大,从抓包的结果来看。

所谓1M的图片只是开头的一个静态的图片。

就是上面这张。

然后随便找了一台服务器应付了事。

平常每秒用到二维码的人不多,所以没事。

现在西安一下子用的人多,那套肯定应付不了。

其实,只要整一下CDN,这个问题瞬间解决。

user avatar

对于搞技术的而言基本、大概、理论上可以说是没难度,不过很显然这篇报道里写的并不是给普通人看的,给完全不懂技术的外行领导内行的领导看足够糊弄了。

user avatar

大是大非面前的科技创新!赢了✌️(呕了

user avatar

我想尝试下用最快的速度压缩下图片,从1M压缩到100K要多久,不知道需不需要2天两夜。

我不知道他们底层存储用的哪家的oss,我用阿里云做一个测试吧。

注意:图像高级压缩功能目前只支持在华北3(张家口)和华东2(上海)地域通过工单申请试用。

敖丙现在教你3句话将1M图片压缩至100K一下:

开通完毕就可以使用了,无需使用一行代码,只需要在原来的URL上加上?x-oss-process=image/format,heic或者``?x-oss-process=image/format,webp`即可。

heicwebp只是两种图片格式。

HEIF(High Efficiency Image Format)是Moving Picture Experts Group于2015年制定的存储图片和图片序列的格式,具有以下特点:

  • 超高压缩率,在图片质量相同的情况下,相比JPEG节省空间80%以上。
  • 支持增加图片深度信息、透明通道等。
  • 支持无损。
  • 支持语音。
  • 支持多张图片实现GIF和livePhoto的动画效果。
  • 无类似JPEG的最大像素限制。

Webp 是一种同时提供了有损压缩无损压缩(可逆压缩)的图片文件格式,派生自影像编码格式VP8,被认为是WebM多媒体格式的姊妹项目,是由Google在购买[On2 Technologies](baike.baidu.com/item/On Technologies)后发展出来,以BSD授权条款发布。这个格式大家应该经常见到。

大家针对这两种格式一定要判断项目中能否兼容哦!我曾经做过一个小程序发现无法使用,白高兴了一场

压缩走起

如下图为原图,800Kb:

分别使用heicwebp两种格式进行压缩:

heic格式:

webp格式:

再次压缩——宽高设置

较真的朋友就要说了:这不是157k还没到100k以下嘛?傻瓜,还可以改变图片尺寸嘛。

在刚刚的URL上继续追加/resize,l_900,h_600即设置宽为900,高为600。再试试~

查看图像质量,杠杠滴~

如果是西安一码通扫码这图像质量完全没毛病,二维码分辨率不需要很高。


ps:下次有这种需要可以找我,我嗷嗷快

类似的话题

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有