图像格式转换处理器
更新时间:2026-04-23
简介
图像格式转换处理器
功能描述
-
多种图像格式支持:
- 输入:URL地址、BOS地址、Base64编码、二进制流
- 输出:PNG、JPEG/JPG、WebP
-
质量调整:
- 支持调整有损压缩格式(JPEG、WebP)的输出质量
- 可设置质量范围为-1-100,-1表示使用默认值
-
智能格式处理:
- 自动处理透明通道(JPEG不支持透明通道)
- 自动处理色彩模式转换(如CMYK转RGB)
-
多种输出模式:
- Base64编码直出
- 支持本地存储
- 支持直接存储到BOS
算子参数
输入
| 输入 | 含义 |
|---|---|
| image | 包含输入图像的数组,支持URL/base64/二进制格式 |
| image_name | 可选参数,包含图像标识名的数组,用于生成输出文件名 |
输出
| 输出 | 含义 |
|---|---|
| base64 | 压缩后图像的base64编码 |
| image_path | 本地存储路径(当配置输出目录时有效) |
参数
| 参数名称 | 类型 | 默认值 | 描述 |
|---|---|---|---|
| output_format | str | "png" | 输出图像的格式。描述: 输出图像的格式,支持多种常见图像格式。可选值: ["png", "jpg", "jpeg", "webp"]默认值: "png" |
| image_suffix | str | "" | 保存到本地图像后缀描述: 保存本地的图像后缀,如果不设置,将根据output_format自动生成默认值: "" |
| output_dir | str | 保存图像的本地文件夹路径。描述: 转换后图像的本地存储目录,如果为空,则转换后的图像不保存到本地默认值: "" | |
| bos_dir | str | "" | 保存图像到对象存储BOS中描述: 转换后图像的存储BOS地址, 例如"bos://{bucket}/{path}"默认值: "" |
| image_src_type | str | "image_url" | 输入图像的格式类型,支持:url地址(image_url)base64编码(image_base64)二进制流(image_binary)描述: 输入图像的格式类型。可选值: ["image_url", "image_base64", "image_binary"]默认值: "image_url" |
| quality | int | -1 | 输出图像的质量(仅适用于有损压缩格式描述: 输出图像的质量,范围-1-100,仅适用于jpg、jpeg、webp等有损压缩格式当设置为-1时,将使用各格式的内置默认质量值(JPEG默认75,WebP默认80)默认值: -1 |
调用示例
Plain Text
1from __future__ import annotations
2
3import os
4import daft
5from daft import col
6
7from daft.aihc.common.udf import aihc_udf
8from daft.aihc.functions.image.image_format_convert import ImageFormatConvert
9
10if __name__ == "__main__":
11 if os.getenv("DAFT_RUNNER", "native") == "ray":
12 import ray
13 ray.init(dashboard_host="0.0.0.0", ignore_reinit_error=True)
14 daft.set_runner_ray()
15 daft.set_execution_config(actor_udf_ready_timeout=6000, min_cpu_per_task=0)
16
17 samples = {
18 "image": [
19 "file:///local/sample_1.jpg",
20 "file:///mnt/pfs/sample_2.jpg",
21 "file:///mnt/bos/sample_3.jpg",
22 ]
23 }
24
25 image_src_type = "image_url"
26 ds = daft.from_pydict(samples)
27 ds = ds.with_column(
28 "image_format_convert",
29 aihc_udf(
30 ImageFormatConvert,
31 construct_args={
32 "output_format": "jpg",
33 "image_src_type": image_src_type,
34 "quality": -1,
35 "output_dir": "./test_images_output",
36 },
37 batch_size=1,
38 )(col("image"), col("image_name")),
39 )
40
41 ds.show()
评价此篇文章
