图片优化使用场景

本页面提供了有关高级图片处理行为、流水线排序效果和自动图片归一化规则的示例。

转换顺序

imop 查询参数字符串中的操作按从左到右的顺序依次运行,但 metadatascale 先运行,canvas 最后运行。由于每项操作都直接作用于前一项操作的视觉输出,因此参数的顺序会影响衍生图像的最终视觉质量和细节保留程度。

假设源图片的尺寸为 1,000 像素(宽)x 1,000 像素(高):

示例:Resize 后跟 Crop

https://www.example.com/image.jpg?imop=Resize,height=200;Crop,left=0.5

  1. 调整大小:系统首先将图片从 1,000 × 1,000 像素缩小到 200 × 200 像素,以满足 height=200 参数的要求。

  2. 裁剪left=0.5 操作会移除已缩小的图片的左半部分。

结果:一张 100 x 200 像素的最终图片,表示内容右侧的 50%。由于在剪裁之前整个图片都经过了缩小处理,因此最终区域保留的细节明显更少。

示例:Crop 后跟 Resize

https://www.example.com/image.jpg?imop=Crop,left=0.5;Resize,height=200

  1. 剪裁left=0.5 操作首先提取高分辨率源图像的右半部分,从而创建 500 x 1000 px 中间图像。

  2. 调整大小height=200 操作会将裁剪后的部分调整为最终高度。

结果:最终图片尺寸为 100 * 200 像素。由于先裁剪原始图片,然后再调整其大小,因此最终输出的图片保留了更多细节,清晰度也更高。

拉伸和放大行为

默认情况下,图片优化服务会强制执行严格的仅缩小策略,以节省边缘传送带宽并保护视觉质量。如果您请求的尺寸大于原始图片,Cloud CDN 会忽略放大操作,并按原始尺寸输出图片。

如需替换此行为并强制将资源放大,您必须明确声明 stretch 值。

放大验证要求

  • 双重调整大小规则:只有在 Resize 操作中明确提供 widthheight 参数时,才允许使用 stretch

  • 单维度限制:如果您在仅定义单个维度(例如 widthheight)时包含 scaling=stretch,图片优化服务会拒绝整个请求。

例如,

有效请求?imop=resize,width=500,height=500,scaling=stretch

无效请求?imop=resize,width=500, scaling=stretch

缓存和缓存失效

当您更新源服务器上的原始图片时,必须使缓存版本失效,以确保 Cloud CDN 检索并传送更新后的资源。

缓存行为

附加到图片网址的每个唯一的转换参数组合都会在边缘创建单独的缓存条目。为优化缓存命中率,请避免创建过多的唯一参数变体。 例如,单像素变化。

Cloud CDN 会对缓存键进行规范化处理,以将相同的转换参数归为一组,无论这些参数在查询字符串中的顺序如何。

失效行为

当您更新源服务器上的原始图片时,只需为基本图片网址提交一次失效请求。增强型 Cloud CDN 会自动在全球范围内清除缓存的原始图片及其所有自动生成的变体(例如 WebP 或优化版本)。

变体失效的运作方式

当您使用与基本映像网址(例如 /images/my-picture.jpg)匹配的路径格式发出缓存失效请求时,Cloud CDN 会自动识别并清除以下内容:

  • 原始缓存的来源图片。

  • 之前生成的所有变体

您可以使用以下方法应用 Cloud CDN 缓存失效:

  • Google Google Cloud 控制台:依次前往“网络服务”> Cloud CDN,选择源,然后前往缓存失效标签页。 或者,您也可以前往“网络服务”>“负载均衡”,选择您的负载均衡器,然后使用缓存失效标签页。

  • Google Cloud CLI:使用 Google Cloud CLI compute url-maps invalidate-cdn-cache 命令。

  • 缓存标记:缓存标记是管理优化图片的推荐方法。这样一来,您就可以发出以特定标记为目标的失效请求,从而清除与其关联的内容,实现更精细的控制。

例如:

如需使 /images/my-picture.jpg 及其所有优化变体在全球范围内失效,请执行以下操作:

  • 路径:指定确切的路径 /images/my-picture.jpg

  • 主机(可选):如果您只想清除特定网域的图片,请指定相应主机。

提交后,此单一操作会从全球边缘缓存中移除所有优化后的图片版本,确保用户在下次请求时立即收到更新后的版本。

EXIF 中的颜色配置文件和图片方向(标准化)

现代智能手机和数码相机通常会保存具有原始的未旋转像素网格的图片,并依靠嵌入式 EXIF 屏幕方向标记来指示查看设备旋转图片。例如,顺时针旋转 90 度可实现纵向屏幕方向。同样,嵌入式 ICC 色彩配置文件可定义颜色在不同显示器上的显示方式。

为了帮助确保可预测的操作,图片优化边缘流水线会在运行任何转换之前自动对图片进行归一化处理。

归一化流程

  • 在执行转换之前,边缘引擎会读取 EXIF 方向标记和 ICC 色彩配置文件元数据,并将其实际应用于像素网格。这有助于确保后续 cropresize 参数的坐标可预测性。

  • cropresizescale 等操作可针对真实的视觉尺寸正确执行,以防止出现视觉错误。

  • 对核心像素应用调整后,边缘引擎会从文件中移除所有非必需的元数据,以最大限度地节省空间。默认情况下,它会保留 copyright,除非在元数据操作中请求了特定值。

后续步骤