压缩图片以满足目标大小和最小质量要求。
使用限制
仅实时计算引擎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