
Byted Las Image Resample
- 29 installs
- 411 repo stars
- Updated August 4, 2026
- bytedance/agentkit-samples
byted-las-image-resample is a Claude skill that downsamples, resizes, and compresses images via the Volcengine LAS service.
About
This skill downsamples, resizes, and compresses images using Volcengine LAS. A developer provides an image and a target size, and it reduces resolution and file size with a choice of interpolation method (lanczos, bilinear, nearest), can adjust DPI, and can convert between JPEG, PNG, and TIFF. It estimates cost from the image dimensions first and only downscales (no upscaling), with inputs up to 100MB and 225 megapixels.
- Downsamples, resizes, and compresses images via Volcengine LAS
- Supports lanczos, bilinear, and nearest interpolation; adjusts DPI and JPEG/PNG/TIFF format
- Downscale only; inputs up to 100MB and 225 megapixels
Byted Las Image Resample by the numbers
- 29 all-time installs (skills.sh)
- Ranked #975 of 1,335 Generative Media skills by installs in the Skillselion catalog
- Data as of Aug 5, 2026 (Skillselion catalog sync)
byted-las-image-resample capabilities & compatibility
Requires a Volcengine LAS account (LAS_API_KEY); billed per-run, estimated before execution (billing per Volcengine LAS pricing)
- Capabilities
- image resize · image compression · thumbnail generation
- Works with
- openai
- Use cases
- image generation
- Runs
- Runs locally
- Pricing
- Bring your own API key
What byted-las-image-resample says it does
Downsamples, resizes, and compresses images using Volcengine LAS with multiple interpolation methods (lanczos, bilinear, nearest).
lasutil process las_image_resample "$data" > "$workdir/result.json"
**输入限制**:仅支持 JPEG/PNG/TIFF,≤100MB,像素总数 ≤225,000,000。
npx skills add https://github.com/bytedance/agentkit-samples --skill byted-las-image-resampleAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 29 |
|---|---|
| repo stars | ★ 411 |
| Last updated | August 4, 2026 |
| Repository | bytedance/agentkit-samples ↗ |
What it does
Downscale, compress, and reformat images (JPEG/PNG/TIFF) with a chosen interpolation method via Volcengine LAS.
Who is it for?
Downscaling, resizing, compressing, and reformatting JPEG/PNG/TIFF images with lanczos/bilinear/nearest interpolation via Volcengine LAS.
Skip if: Upscaling images, which the operator does not support.
When should I use this skill?
A user wants to resize down, compress, reformat, adjust DPI, or thumbnail images.
What you get
A downscaled, compressed image in the chosen format and size.
- resized image
- compressed image
By the numbers
- input limit <=100MB and <=225,000,000 pixels
- 3 interpolation methods (lanczos/bilinear/nearest)
- downscale only, no upscaling
Files
LAS 图像重采样(las_image_resample)
对图像进行降采样缩放(仅缩小,不支持放大),支持修改 DPI、JPG/PNG 互转。
设计模式
本 skill 主要采用:
- Tool Wrapper:封装
lasutilCLI 调用 - Pipeline:包含 Step 0 → Step N 的顺序工作流
核心 API 与配置
- 算子 ID:
las_image_resample - API: 同步(
process) - 环境变量:
LAS_API_KEY(必填)
详细参数与接口定义见 references/api.md。
Gotchas
- 仅支持降采样:
target_size不得超过原图尺寸,本算子不支持放大。 - 输入限制:仅支持 JPEG/PNG/TIFF,≤100MB,像素总数 ≤225,000,000。
- 密钥安全:若聊天框屏蔽密钥,让用户在当前目录创建
env.sh并写入export LAS_API_KEY="...",SDK 会自动读取。 - 免责声明:最终回复结果时必须包含:"本方式的计费均为预估计费,与实际费用有差距,实际费用以运行后火山产生的账单为准。计费说明请参考 Volcengine LAS 定价。",且禁止使用"实际费用"字眼描述预估价。
工作流(严格按步骤执行)
复制此清单并跟踪进度:
执行进度:
- [ ] Step 0: 前置检查
- [ ] Step 1: 初始化与准备
- [ ] Step 2: 预估价格
- [ ] Step 3: 执行/提交任务
- [ ] Step 4: 结果呈现Step 0: 前置检查(⚠️ 必须在第一轮对话中完成)
在接受用户的任务后,不要立即开始执行,必须首先进行以下环境检查: 1. 检查 `LAS_API_KEY` 与 `LAS_REGION`:确认环境变量或 .env 中是否已配置。
- 若无,必须立即向用户索要(提示:
LAS_REGION常见为cn-beijing)。 - 注意:
LAS_REGION必须与您的 API Key 及 TOS Bucket 所在的地域完全一致。如果用户中途切换了 Region,必须提醒用户其 TOS Bucket 也需对应更换,否则会导致权限异常或上传失败。
2. 检查输入路径:
- 如果用户要求处理的是本地文件,则需要先通过 File API 上传至 TOS(只需
LAS_API_KEY,无需额外 TOS 凭证)。 - 如果算子的输出结果存放在 TOS 上,且用户需要下载回本地,则需要
VOLCENGINE_ACCESS_KEY和VOLCENGINE_SECRET_KEY。对于仅需要上传输入文件的场景,TOS 凭证不再必须。
3. 确认无误后:才能进入下一步。
Step 1: 初始化与准备
环境初始化(Agent 必做):
# 执行统一的环境初始化与更新脚本(会自动创建/激活虚拟环境,并检查更新)
source "$(dirname "$0")/scripts/env_init.sh" las_image_resample
workdir=$LAS_WORKDIR如果网络问题导致更新失败,脚本会跳过检查,使用本地已安装的 SDK 继续执行。
- 处理本地文件时:先本地检查格式和尺寸,预估价格,用户确认后再上传:
# 提前检查图片格式(避免参数错误)
./scripts/check_format.sh <local_path>
# 本地使用 identify 获取尺寸(无需上传即可预估价格)
identify -format "%wx%h" <local_path>计算预估价格并等待用户确认后,再执行上传:
# 用户确认后,上传到 TOS
lasutil file-upload <local_path>上传成功后返回 JSON,取其中的 presigned_url(HTTPS 预签名下载链接,24 小时有效)传给算子作为输入 URL。
Step 2: 预估价格(⚠️ 必须获得用户确认)
1. 读取 references/prices.md 获取最新计费标准。 2. 优先本地获取尺寸(避免不必要上传):
# 使用 ImageMagick identify 本地获取
identify -format "%wx%h" <local_path>如果 identify 失败,再使用 lasutil 远程获取:
lasutil image-info <input_image_url>3. 根据分辨率档位和单价计算总价,将计费单价与预估总价一并告知用户并强制暂停执行,明确等待用户回复确认。在用户明确回复"继续"、"确认"等同意指令前,绝对禁止进入下一步(执行/提交任务)。提示:预估仅供参考,实际以火山账单为准。计费说明请参考 Volcengine LAS 定价。
Step 3: 执行重采样 (Process)
构造基础 data.json:
{
"image_src_type": "image_url",
"image": "<presigned_url>",
"tos_dir": "tos://bucket/output/",
"target_size": [1024, 1024],
"method": "lanczos"
}注:本地文件通过 `lasutil file-upload` 上传后,使用 `presigned_url` 作为 `image` 字段值,`image_src_type` 设为 `"image_url"`。若直接使用 TOS 路径,设置 `"image_src_type": "image_tos"`。
执行命令:
data=$(cat "$workdir/data.json")
lasutil process las_image_resample "$data" > "$workdir/result.json"结果呈现
使用脚本自动生成结果展示(自动包含计费声明):
./scripts/generate_result.md.sh $workdir/result.json <estimated_price>生成内容包含:
- 任务信息卡片
- 输入/输出尺寸统计
- 自动包含计费声明 ✅
手动提取方式:
jq -r '"输出路径:" + .data.image_path' $workdir/result.json审查标准
执行完成后,Agent 应自检: 1. 环境变量是否正确配置 2. 输入文件是否成功上传 3. 输出结果是否正确呈现给用户 4. 计费声明是否包含
byted-las-image-resample 自检清单(Skill Hub)
- SKILL.md 顶部包含 YAML frontmatter(name/description)
- 文档不包含任何真实密钥、Token、Cookie(只引用
LAS_API_KEY环境变量名) - 推荐流程统一使用
lasutil process,不依赖自定义脚本 data.json模板前明确引用 references/api.md 的ImageResampleReqParams- skill 目录内不包含临时文件(如
__pycache__、.DS_Store、大体积输出文件)
{
"skill_name": "byted-las-image-resample",
"evals": [
{
"id": 1,
"prompt": "我有一张图片 https://example.com/sample.jpg,需要降采样到 1024x1024,并输出到 tos://bucket/output/。请给出 data.json 模板、lasutil process 命令,并说明结果里哪个字段是输出图像的 TOS 路径。",
"expected_output": "给出 data.json、lasutil process 命令、说明返回 data.image_path 为输出路径。",
"files": []
},
{
"id": 2,
"prompt": "我有一张 TOS 图片 tos://bucket/input/sample.jpg,需要降采样到 800x600,输出为 png 格式。请给出 data.json 模板(image_src_type、image_suffix 等)和 lasutil process 命令。",
"expected_output": "包含 image_src_type=image_tos、image_suffix=.png、target_size=[800,600] 的示例,以及 lasutil process 命令。",
"files": []
},
{
"id": 3,
"prompt": "我有一张本地图片 ./test.jpg,需要降低 DPI 到 72。请问应该如何使用 byted-las-image-resample,给出相关命令和参数配置。",
"expected_output": "包含 las_sdk.file.upload 将本地图片上传到 TOS 的步骤,以及设置 image_src_type=image_tos 和对应 dpi 的 data.json 模板。",
"files": []
}
]
}
# Copyright (c) 2025 Beijing Volcano Engine Technology Co., Ltd. and/or its affiliates.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
las_image_resample API 参考
Base / Region
- API Base:
https://operator.las.<region>.volces.com/api/v1 - Region:
cn-beijingcn-shanghai
鉴权:Authorization: Bearer $LAS_API_KEY
请求体定义
| 字段名 | 类型 | 是否必选 | 说明 |
|---|---|---|---|
| operator_id | string | 是 | 固定为 las_image_resample(CLI 自动填充) |
| operator_version | string | 是 | 固定为 v1(CLI 自动填充) |
| data | ImageResampleReqParams | 是 | `data.json` 的内容对应此字段,详情见下表 |
ImageResampleReqParams
| 字段名 | 类型 | 是否必选 | 默认值 | 说明 |
|---|---|---|---|---|
| image_src_type | string | 是 | - | 输入图像格式类型:image_url、image_tos、image_base64、image_binary |
| image | string | 是 | - | 输入图像(URL、TOS路径或base64编码) |
| tos_dir | string | 是 | - | 输出 TOS 目录路径 |
| target_size | list[int] | 否 | [200, 200] | 重采样后的图像尺寸 [width, height] |
| target_dpi | list[int] | 否 | [72, 72] | 图像 DPI [x, y] |
| method | string | 否 | lanczos | 插值算法:nearest、bilinear、bicubic、lanczos |
| image_suffix | string | 否 | .jpg | 输出格式:.jpg 或 .png |
| image_name | string | 否 | - | 图像标识名,用于生成输出文件名(不带后缀) |
响应体定义
| 字段名 | 类型 | 备注 |
|---|---|---|
| metadata | metadata | 请求元信息,包含 task_status, business_code, request_id 等 |
| data | ImageResampleResponse | 返回数据 |
ImageResampleResponse
| 字段名 | 类型 | 备注 |
|---|---|---|
| image_path | string | 重采样后图像的 TOS 存储路径 |
插值算法说明
| 方法 | 特点 | 适用场景 |
|---|---|---|
| nearest | 速度最快 | 像素风格图像 |
| bilinear | 速度与质量平衡 | 一般用途 |
| bicubic | 更平滑的高质量缩放 | 需要较高质量的场景 |
| lanczos | 抗锯齿效果更好 | 照片(推荐) |
使用限制
- 仅支持降采样:target_size 的宽高不得超过原图
- 输入图像格式支持:JPEG/PNG/TIFF(JPG/TIF 作为别名支持)
- 输入图像大小限制:文件大小不超过 100MB;像素总数不超过 225,000,000
- 需要能访问输入图像(公网 URL 或账号下的 TOS 地址)
业务码
| 业务码 | 含义 |
|---|---|
| 0 | 正常返回 |
| 1001 | 通用请求端异常 |
| 1002 | 缺失鉴权请求头 |
| 1003 | API Key 无效 |
| 1004 | 指定的 Operator 无效 |
| 1006 | 请求入参格式有误 |
| 2001 | 通用服务端异常 |
请求示例
以下为直接调用 HTTP API 的完整示例。通过lasutilCLI 调用时,data.json只需填写data字段内部的内容,operator_id/operator_version由 CLI 的--operator-id参数自动注入。
curl --location "https://operator.las.cn-beijing.volces.com/api/v1/process" \
--header "Content-Type: application/json" \
--header "Authorization: Bearer $LAS_API_KEY" \
--data '{
"operator_id": "las_image_resample",
"operator_version": "v1",
"data": {
"image_src_type": "image_url",
"image": "https://example.com/sample.jpg",
"tos_dir": "tos://bucket/output/",
"image_suffix": ".jpg",
"target_size": [1024, 1024],
"target_dpi": [72, 72],
"method": "lanczos"
}
}'响应示例
{
"metadata": {
"task_status": "COMPLETED",
"business_code": "0",
"error_msg": "",
"request_id": "c7b29d78a99f88beda5497753ed60816"
},
"data": {
"image_path": "tos://bucket/output/sample_resample.jpg"
}
}计费信息
- 4k(4096\*2304) : 50 元/百万张
- 12k(12288\*6912) : 350 元/百万张
- 16k : 600 元/百万张
#!/bin/bash
# ==============================================================================
# 图片格式预检查
# Usage: scripts/check_format.sh <file_path>
# ==============================================================================
FILE_PATH="$1"
if [ -z "$FILE_PATH" ]; then
echo "❌ 错误: 请提供文件路径"
exit 1
fi
# 获取文件扩展名并转小写
EXT=$(echo "$FILE_PATH" | awk -F. '{print tolower($NF)}')
# 允许的图片格式
ALLOWED_FORMATS="jpg jpeg png bmp tiff tif webp"
if [[ " $ALLOWED_FORMATS " =~ " $EXT " ]]; then
echo "✅ 格式检查通过: $EXT"
exit 0
else
echo "⚠️ 警告: 文件扩展名 '$EXT' 不在推荐格式列表中"
echo " 推荐格式: $ALLOWED_FORMATS"
echo " 请确认输入格式正确"
exit 1
fi
#!/bin/bash
# ==============================================================================
# LAS SDK & Skill 环境初始化与更新脚本
# 用法: source scripts/env_init.sh <operator_id>
# ==============================================================================
OPERATOR_ID=$1
if [ -z "$OPERATOR_ID" ]; then
echo "❌ 错误: 必须提供 operator_id"
return 1 2>/dev/null || exit 1
fi
# 1. 虚拟环境隔离
# Find project root dynamically, then check for .las_venv
# skill structure: <project_root>/skills/<skill>/scripts/env_init.sh
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(cd "${SCRIPT_DIR}/../../.." && pwd)"
# 优先复用项目根目录的虚拟环境,不存在才创建新的
if [ -d "${PROJECT_ROOT}/.las_venv" ]; then
source "${PROJECT_ROOT}/.las_venv/bin/activate"
elif [ ! -d ".las_venv" ]; then
python3 -m venv .las_venv
source .las_venv/bin/activate
else
source .las_venv/bin/activate
fi
# 2. 获取远程 manifest
manifest_url="https://las-ai-cn-beijing-online.tos-cn-beijing.volces.com/operator_cards_serving/public/skills/sdk/manifest.json"
manifest=$(curl -sf "$manifest_url" || echo '{}')
# 3. 比较 SDK 版本并自动更新
local_ver=$(lasutil --version 2>/dev/null | grep -oE '[0-9]+\.[0-9]+\.[0-9]+' || echo "0.0.0")
remote_ver=$(echo "$manifest" | jq -r '.sdk_version // "unknown"')
if [ "$local_ver" = "0.0.0" ] || [ "$local_ver" != "$remote_ver" ]; then
echo "📦 SDK 更新: $local_ver → $remote_ver,正在安装..."
pip install --quiet --upgrade https://las-ai-cn-beijing-online.tos-cn-beijing.volces.com/operator_cards_serving/public/skills/sdk/las_sdk-0.2.0-py3-none-any.whl
fi
# 4. 检查当前算子的参数变更
op_changes=$(echo "$manifest" | jq -r ".operators.${OPERATOR_ID}.changes_since // {} | to_entries[] | \" 自 \(.key) 起: \(.value[])\"" 2>/dev/null)
if [ -n "$op_changes" ]; then
echo "⚠️ 算子 ${OPERATOR_ID} 有参数更新:"
echo "$op_changes"
echo "建议使用 find-skills 检索并更新此 skill 到最新版本。"
fi
# 5. 初始化工作目录
export LAS_WORKDIR=$(mktemp -d /tmp/las_work_XXXXXX)
echo "✅ 环境初始化完成,工作目录: $LAS_WORKDIR"
#!/bin/bash
# ==============================================================================
# 生成结果展示 markdown 模板,自动包含计费声明
# Usage: scripts/generate_result.md.sh <result_json> <estimated_price>
# ==============================================================================
RESULT_JSON="$1"
ESTIMATED_PRICE="$2"
if [ -z "$RESULT_JSON" ] || [ ! -f "$RESULT_JSON" ]; then
echo "❌ 错误: 需要提供 result.json 文件路径"
exit 1
fi
cat <<EOF
# 图片重采样结果
## 任务信息
- **算子**: \`las_image_resample\`
EOF
if [ -n "$ESTIMATED_PRICE" ]; then
cat <<EOF
- **预估计费**: ${ESTIMATED_PRICE} 元
EOF
fi
cat <<EOF
## 处理结果
EOF
cat "$RESULT_JSON" | jq -r '
.data | "
- **输入尺寸**: \(.original_width) × \(.original_height)
- **输出尺寸**: \(.output_width) × \(.output_height)
- **输出路径**: \`\(.output_path)\`
"'
EOF
cat <<'EOF'
---
本方式的计费均为预估计费,与实际费用有差距,实际费用以运行后火山产生的账单为准。计费说明请参考 [Volcengine LAS 定价](https://www.volcengine.com/docs/6492/1544808)。
EOF