性能优化-对象存储oss图片存储

avatar
前端

参考:help.aliyun.com/zh/oss/user…

一、图片缩放

注意原图限制

  • 图片格式只能是:JPG、PNG、BMP、GIF、WebP、TIFF。

  • GIF格式的图片只支持指定宽高缩小,不支持按百分比缩小(按百分比缩小的情况下,动态图会变成静态图)。

  • GIF格式的图片不支持放大。

  • 原图大小不能超过20 MB。如果您需要调整原图大小限制,请在配额中心申请。

    • 说明 仅图片缩放参数支持调整原图大小限制,其他图片处理参数不支持调整原图大小限制。
    • 宽或高不能超过30,000 px,且总像素不能超过2.5亿 px。
    • 动态图片(例如GIF图片)的像素计算方式为宽*高*图片帧数;非动态图片(例如PNG图片)的像素计算方式为宽*高

二、格式转换

WebP vs JPEG XL vs AVIF: JPEG 替代之战

因为传统的 PNG-8/PNG-24,JPEG,GIF 各自或多或少都存在一些问题,近些年来它们的替代方案之争也愈演愈烈,核心领跑者可能是 WebPJPEG XLAVIF

再简单了解了解它们:

WebP

WebP 最初由 Google 在 2010 年 9 月发布,其特性总结如下:

  1. 可以同时提供无损/有损压缩(像 JPEG 一样)和支持透明度(像 PNG 一样)的图片文件格式
  2. 支持动画效果(像 GIF 一样)
  3. WebP 主要优势在于有损编码,其无损编码的性能和压缩比表现一般
  4. WebP 的缺点在于其编解码性能不是特别理想
  5. 在兼容性方面,除了 IE,基本已经得到了全系列浏览器支持

对于复杂的图像(比如照片)来说,WebP 无损编码表现并不好,但有损编码表现却非常棒。相近质量的图片解码速度 WebP 相距 JPEG 也已经相差不大了,而文件压缩比却能提升不少。

oss转换

您可以通过格式转换参数,转换存储在OSS内原图的格式

参数说明

操作名称:format

参数说明如下:

取值范围描述
jpg将原图保存为JPG格式。重要不支持将存在透明通道的HEIC格式的图片保存为JPG格式。
png将原图保存为PNG格式。
webp将原图保存为WebP格式。
bmp将原图保存为BMP格式。
gif原图为GIF图片则继续保存为GIF格式;原图不是GIF图片,则按原图格式保存。
tiff将原图保存为TIFF格式。
heic将原图保存为HEIF格式。说明仅华北3(张家口)、华东2(上海)、华南1(深圳)、华东1(杭州)、华北2(北京)、新加坡地域支持HEIF格式。
avif将原图保存为AVIF格式。说明仅华北3(张家口)、华东2(上海)、华南1(深圳)、华东1(杭州)、华北2(北京)、新加坡地域支持AVIF格式。

注意事项

  • 图片处理包含缩放操作时,建议将格式转换参数放到处理参数的最后。

    例如image/resize,w_100/format,jpg

  • 图片处理包含缩放和水印操作时,建议将格式转换参数添加在缩放参数之后。

    例如image/resize,w_100/format,jpg/watermark,...

  • 如果原图没有透明通道,转换成PNG、Web、BMP等存在透明通道的格式,默认会把透明填充成白色。

  • OSS不支持将透明色填充为黑色。

三、图片渐进显示

您可以通过渐进显示参数,将OSS内存储的原图修改为渐进显示。本文介绍设定图片渐进显示时所用到的参数及示例。

当网络环境较差或图片较大时,图片在网页上有两种显示方式:

  • 标准显示:图片会按照从上到下的顺序一行一行地加载显示。
  • 渐进显示:先显示整个图片的模糊轮廓,然后逐渐加载直至显示完整的图片。

目前,图片处理的渐进显示操作仅适用于将原图处理为JPG格式图片的情况,若原图不为JPG格式的图片,您需要增加format,jpg参数将图片改为JPG格式。

示例

以一张5.7M的图片来做对比添加参数interlace,1图片在1~2秒之间就能完成展示,直接访问图片需要再图片完全加载后展示用时将近7s。

image.png

image.png

四、质量变换

质量变换操作是使用原图本身的格式对图片进行压缩。您可以通过质量变换参数,修改存储在OSS内原图的质量。本文介绍对图片进行质量变换时所用到的参数及示例。

质量变换仅支持JPG和WebP,其他图片格式不支持。

参数说明

操作名称:quality

参数说明如下:

参数描述取值范围
q设置图片的相对质量,对原图按百分比进行质量压缩。例如原图质量为100%,添加quality,q_90参数会得到质量为90%的图片。原图质量为80%,添加quality,q_90参数会得到质量72%的图片。说明只有JPG格式的原图添加该参数,才可以决定图片的相对质量。如果原图为WebP格式,添加该参数相当于指定了原图绝对质量,即与参数Q的作用相同。[1,100]
Q设置图片的绝对质量,将原图质量压缩至Q%,如果原图质量小于指定参数值,则按照原图质量重新进行压缩。例如原图质量是95%,添加quality,Q_90参数会得到质量90%的图片。原图质量是80%,添加quality,Q_90只能得到质量80%的图片。说明该参数只能对保存格式为JPG、WebP的图片使用,对其他格式的图片无效果。[1,100]