IMAGE_COMPRESS

更新时间:
复制为 MD 格式

压缩图片以满足目标大小和最小质量要求。

使用限制

仅实时计算引擎VVR 11.6及以上版本支持IMAGE_COMPRESS函数。

语法

ROW<compressed_image_content VARBINARY, result_size INT, result_quality INT, result_long_edge INT> IMAGE_COMPRESS(image_content VARBINARY, max_size INT, max_edge INT, min_quality INT)

入参

参数

数据类型

是否必填

说明

image_content

VARBINARY

图像内容。

max_size

INT

目标图片最大大小。单位:字节数。若不指定,默认值7864320(7.5MB)。

max_edge

INT

最长边限制。单位:像素。默认值:1920。

min_quality

INT

允许降到的最低质量。若不指定,默认值:40。可填值:0~100。

图像压缩步骤说明

阶段一:初始分辨率限制
按比例缩放图像,使其最长边不超过指定阈值(max_edge)。若文件体积已满足 max_size,则输出图像并结束;否则进入阶段二。

阶段二:质量参数降级
保持分辨率不变,逐步递减图像压缩质量。若在降至最低质量阈值(min_quality)前,文件体积已满足 max_size,则输出图像并结束;否则进入阶段三。

阶段三:分辨率深度缩放
保持最低质量不变,逐步按比例缩小图像分辨率。若文件体积满足 max_size,则输出图像。若图像最短边降至 10 像素时文件体积仍超标,则终止操作并判定为压缩失败。

出参

参数

数据类型

说明

compressed_image_content

VARBINARY

压缩后图像内容。

result_size

INT

压缩后的图像大小。单位:字节数。

result_quality

INT

压缩后的图像quality。

result_long_edge

INT

压缩后的图像最长边大小。单位:像素。

示例

  • 测试数据

    image_url(STRING)

    https://dashscope.oss-cn-beijing.aliyuncs.com/images/dog_and_girl.jpeg

  • 测试语句

    SELECT
       compressed_image_row.compressed_image_content AS compressed_image_content,
       compressed_image_row.result_size AS compress_result_size,
       compressed_image_row.result_quality AS compress_result_quality,
       compressed_image_row.result_long_edge AS compress_result_long_edge
     FROM (
       SELECT IMAGE_COMPRESS (FETCH_CONTENT (image_url)) AS compressed_image_row FROM T1
     );
  • 测试结果

    参数

    数据类型

    输出

    compressed_image_content

    VARBINARY

    略。

    compress_result_size

    INT

    496395

    compress_result_quality

    INT

    100

    compress_result_long_edge

    INT

    1920