Adobe 調整照片和影片大小
將圖片或影片調整為使用者指定的尺寸、長寬比或命名大小。
針對社群媒體平台組合(Instagram、TikTok 等)→ 請改用 adobe-create-social-variations 技能。
工具參考
| 步驟 | 工具 | 備註 |
|---|---|---|
| 開啟檔案挑選器 | asset_add_file | 回傳 presignedAssetUrl、assetId 和 mediaType |
| 在 CC 中尋找資產 | asset_search | 圖片需透過 asset_add_file 重新暫存;影片可直接使用 id |
| 渲染 PSD/AI | document_render_vector | 在調整大小前轉換為 JPEG |
| 調整圖片大小 | image_crop_and_resize | 每個尺寸呼叫一次;預設為 reframe |
| 預覽輸出 | asset_preview_file | 所有輸出在單一呼叫中處理 |
| 上傳至 CC(開始) | asset_initialize_file_upload | 區塊上傳管線中的第一個呼叫 |
| 上傳至 CC(完成) | asset_finalize_file_upload | 第二個呼叫;回傳用於展示板的 presigned CC URL |
| 建立 Firefly 展示板 | create_firefly_board | 傳入 import_adobe_storage 並附上最終 URL |
| 調整影片大小 | video_resize | 回傳 statusId 供輪詢使用 |
| 輪詢影片調整狀態 | resizeVideoPoll | 延遲工具 — 必須先載入才能呼叫 |
工作流程
步驟 0 — 初始化 Adobe 工具
首先呼叫 adobe_mandatory_init。這會回傳檔案處理規則及工作流程其餘部分所需的路由指引。
{ "skill_name": "adobe-resize-photos-and-videos", "skill_version": "1.0.1" }
步驟 1 — 權限檢查
現在 adobe_mandatory_init 已確認「Adobe for creativity」連接器啟用,請對照上述工具參考表格,檢查哪些工具可透過該連接器使用。
立即需要執行
步驟 1: 若參數缺失或不明確 → 執行多步驟收集(下方步驟 2)。
步驟 2: 若未上傳檔案,執行步驟 3(asset_add_file({}))。
步驟 3: 偵測圖片或影片,並路由至正確的工作流程(步驟 5 圖片/影片)。
步驟 2 — 多步驟收集
當使用者未提供完整參數(類型 + 尺寸 + 適應模式)時執行。 若使用者的訊息已包含全部三者,則跳過此步驟。
使用 AskUserQuestion 逐步收集參數。
步驟 2a — 類型
AskUserQuestion([{
question: "照片還是影片?",
type: "single_select",
options: ["照片", "影片"]
}])
步驟 2b — 尺寸
如果是照片(multi_select — 使用者可選擇一個或多個):
AskUserQuestion([{
question: "尺寸 — 選擇您需要的所有選項",
type: "multi_select",
options: [
"1080 × 1080 — Instagram 正方形",
"1080 × 1350 — Instagram 直式",
"1080 × 1920 — 限時動態 / Reels",
"1920 × 1080 — YouTube / 橫式",
"1280 × 720 — YouTube 縮圖",
"1200 × 675 — X / Twitter 貼文",
"1200 × 630 — Facebook / OG 圖片",
"1080 × 566 — LinkedIn 貼文",
"2560 × 1440 — YouTube 橫幅",
"3840 × 2160 — 4K / UHD",
"400 × 400 — 個人資料 / 頭像",
"2480 × 3508 — A4 列印(300 dpi)",
"自訂 — 我會輸入"
]
}])
若使用者包含「自訂」→ 後續提問:「請輸入您的自訂尺寸(例如 1500×800):」
若使用者選擇多個預設選項 → 每次針對一個尺寸執行 image_crop_and_resize,
每次使用相同的來源 URI 和參數。最後一起預覽所有輸出。
如果是影片(multi_select — 使用者可選擇一個或多個):
AskUserQuestion([{
question: "尺寸 — 選擇您需要的所有選項",
type: "multi_select",
options: [
"1080 × 1920 — Reels / TikTok / 限時動態",
"1920 × 1080 — YouTube / 橫式",
"1080 × 1080 — 正方形貼文",
"1280 × 720 — YouTube 720p",
"3840 × 2160 — 4K / UHD",
"854 × 480 — SD / 480p",
"自訂 — 我會輸入"
]
}])
若使用者選擇多個影片預設選項 → 為每個尺寸提交獨立的 video_resize 工作,
輪詢至完成,最後一起預覽所有輸出。
步驟 2c — 適應模式
如果是照片(single_select):
AskUserQuestion([{
question: "適應模式",
type: "single_select",
options: [
"Reframe — 裁切填滿",
"Pad — 黑邊信箱,不裁切",
"Extract — 隔離主體"
]
}])
如果是影片(single_select):
AskUserQuestion([{
question: "適應模式",
type: "single_select",
options: [
"Letterbox — 保持比例",
"Crop — 填滿,無黑邊",
"Stretch — 強制精確(變形)"
]
}])
步驟 2d — 智慧對焦(僅限照片)
AskUserQuestion([{
question: "智慧對焦 — 裁切應以何處為中心?",
type: "single_select",
options: [
"主體",
"臉部 / 肖像",
"上半身",
"中心(幾何)",
"命名物件 — 我會描述"
]
}])
若使用者選擇「命名物件」→ 後續提問:「請描述該物件(例如『紅色汽車』、『標誌』):」
步驟 2e — 選項(僅限照片)
AskUserQuestion([{
question: "還有其他選項嗎?",
type: "multi_select",
options: [
"批次 — 多張圖片",
"輸出:JPEG",
"輸出:PNG"
]
}])
步驟 2f — 來源(僅限影片)
AskUserQuestion([{
question: "影片在哪裡?",
type: "single_select",
options: [
"從裝置上傳",
"從 Creative Cloud"
]
}])
步驟 3 — 取得來源檔案
關鍵 — /mnt/user-data/uploads/ 路徑不可用做 URL。
即使使用者已附加檔案且該檔案在上下文中顯示為 /mnt/user-data/uploads/ 路徑,
您也不能將此路徑傳遞給任何 Adobe 工具。請呼叫 asset_add_file() 來暫存檔案 — /mnt/user-data/uploads/ 路徑無法被 Adobe 工具擷取。
錯誤 ❌ imageURI: "/mnt/user-data/uploads/photo.jpg"
錯誤 ❌ imageURI: "file:///mnt/user-data/uploads/photo.jpg"
正確 ✅ 呼叫 asset_add_file() → 使用挑選器上下文中的 presignedAssetUrl
尚無檔案 → 立即開啟挑選器:
asset_add_file()
從回傳的 mediaType 偵測類型:
image/*→ 圖片工作流程video/*→ 影片工作流程
步驟 4 — 解析目標尺寸
| 使用者輸入 | 解析為 |
|---|---|
1920×1080、1920x1080 | width:1920,height:1080 |
4K | 3840 × 2160 |
HD、1080p | 1920 × 1080 |
720p | 1280 × 720 |
480p | 854 × 480 |
A4 列印 | 2480 × 3508(300 DPI 直式) |
Letter 列印 | 2550 × 3300(300 DPI 直式) |
16:9、1:1、4:5、9:16 | 比例字串 → 傳遞為 output: "16:9" |
square | output: "1:1" |
僅寬度(800px wide) | width:800,使用比例字串維持長寬比 |
若表單中未指定目標,且使用者訊息中也未提及 → 提問:
「您需要什麼尺寸?(例如 1920×1080、A4、16:9)」
圖片工作流程
步驟 5(圖片)— 有效的 URI 來源
只有這些可用作 imageURI:
- 來自
asset_add_file()的presignedAssetUrl✅ - 來自先前工具呼叫的
outputUrl✅ - 使用者提供的公開 HTTPS URL ✅
不可用作 imageURI:
/mnt/user-data/uploads/路徑 ❌- 直接來自
asset_search的renditionURL❌ file://URI ❌
| 來源 | 解決方法 |
|---|---|
| 上傳的檔案 | asset_add_file() → presignedAssetUrl |
| CC 儲存資產 | asset_search → 透過 asset_add_file() 重新暫存 → presignedAssetUrl |
| 先前工具輸出 | 直接使用 outputUrl |
| PSD / AI 檔案 | document_render_vector(JPEG,300 DPI)→ outputPresignedUrl |
步驟 6(圖片)— 適應模式
| 意圖 | 模式 | 備註 |
|---|---|---|
| "調整為 WxH" / 預設 | reframe | 在目標比例下最大裁切,居中 — 無變形 |
| "不裁切"、"黑邊信箱"、"放入內部" | pad | 以白色填滿空白區域 |
| "隔離主體"、"緊密裁切" | extract | 圍繞偵測區域緊密裁切 |
預設:reframe。 僅在使用者明確指定時才變更。
⛔
fit: "extract"與明確的{ width, height }不相容 — 它會拉伸圖片。請使用比例字串或省略output。
步驟 7(圖片)— 呼叫 image_crop_and_resize
image_crop_and_resize({
imageURI: presignedAssetUrl,
options: {
output: { width: 1920, height: 1080 }, // 或 "16:9"
fit: "reframe",
focus: "subject", // 或 "face"、"upper_body"、{ prompt: "the car" }、{ x:0.5, y:0.5 }
quality: 7
},
outputFileType: "jpeg" // 或 "png"(若需要透明度)
})
// 結果.outputUrl → 用於預覽或後續串聯
對焦指南:
"subject"— 預設;全身偵測、風景、物體"face"— 肖像、頭部特寫"upper_body"— 胸部以上裁切{ prompt: "the logo" }— 來自使用者表單輸入的命名物件{ x: 0.5, y: 0.5 }— 幾何中心(無明確主體)
步驟 8(圖片)— 批次
若在表單中選取了批次,或使用者提供了多個檔案:
- 對每個檔案呼叫
asset_add_file()以取得個別的 presigned URL - 對每個檔案使用相同參數呼叫
image_crop_and_resize - 收集所有
outputUrl值 - 在單一呼叫中對所有輸出呼叫
asset_preview_file
在此環境中,呼叫會依序執行。若超過 10 張圖片,請先與使用者確認後再開始。
跨回合分頁(批次 >20): 對於大量批次,對話上下文可能會在所有圖片處理完成前填滿, 導致 Claude 在批次中途暫停。這是預期行為 — 並非錯誤。發生時:
- 說明已完成多少張及剩餘張數(例如「20 / 24 完成 — 輸入 '繼續' 處理剩餘部分」)
- 等待使用者確認後再繼續
- 繼續時,從下一張未處理的圖片開始,直到結束
- 僅在最後一張圖片完成後,一起預覽所有輸出
步驟 9(圖片)— 預覽 + 交付 + Firefly 展示板
asset_preview_file({
assets: [
{ name: "photo_1920x1080.jpg", presignedAssetUrl: result.outputUrl },
// 所有成功輸出
]
})
儲存至 CC + 建立 Firefly 展示板
預覽後,使用區塊上傳管線將每個輸出上傳至 CC 儲存
(asset_initialize_file_upload → PUT 區塊 → asset_finalize_file_upload)。
然後使用最終輸出 URL 呼叫 Firefly 展示板工具:
create_firefly_board({
import_adobe_storage: [
final_output_url_1,
final_output_url_2,
// ...
]
})
✅ 確認有效(Stage): 使用來自
asset_finalize_file_upload的 presigned URL 的import_adobe_storage能成功填入展示板。❌ 無效: 使用 CC URN(
urn:aaid:sc:US:...)的import_generic_assets— USS 索引延遲會導致空白展示板。若展示板建立失敗或 URL 格式錯誤,請省略展示板連結(重試無幫助)。
在展示板步驟後張貼完成摘要:
✅ 完成![N] 張圖片已調整大小並就緒。
📥 下載:
• resized_1920x1080.jpg → <cc_storage_url>
[若 N ≤ 3,則逐項列出;若 N > 3,則提供單一資料夾連結]
🎨 在 Firefly 展示板中檢視 → <board_url> ← 若展示板建立失敗則省略
影片工作流程
步驟 5(影片)— 取得資產 ID
影片工具需要 assetId,而非 URL。
| 來源 | 方法 |
|---|---|
透過 asset_add_file 上傳 | 使用回傳的 assetId |
| CC 儲存 | asset_search 搭配 filters.mediaType: "video/mp4" → 使用資產 id |
步驟 6(影片)— 常見目標
| 名稱 | 尺寸 |
|---|---|
| 4K / UHD | 3840 × 2160 |
| 1080p / HD | 1920 × 1080 |
| 720p | 1280 × 720 |
| 480p | 854 × 480 |
| 直式 9:16 | 1080 × 1920 |
| 正方形 1:1 | 1080 × 1080 |
步驟 7(影片)— 呼叫 video_resize
⚠️
resizeVideoPoll是延遲工具 — 請先載入它才能進行輪詢。 直接呼叫而未載入會失敗並出現「not loaded」錯誤。
video_resize({
assetId: videoAssetId,
width: targetW,
height: targetH,
mode: "letterbox" // 預設;請參閱下方模式表格
})
// 回傳 { jobStatus: "pending", statusId }
模式 — 使用精確的 API 值(非使用者面向的標籤):
| 使用者輸入 | API 值 | 行為 |
|---|---|---|
| "fit"、"preserve ratio"、"letterbox" | "letterbox" | 保持比例,新增黑邊(預設) |
| "fill"、"crop to fill"、"no bars" | "crop" | 裁切邊緣以精確填滿目標 |
| "stretch"、"force exact" | "stretch" | 變形以符合精確目標 |
ℹ️ 影片的自動重新構圖功能目前在 Claude 中尚不可用,但新工具一直在新增。如果您需要更多控制,請嘗試使用 Adobe Premiere。
輪詢: 在呼叫之前載入延遲工具 resizeVideoPoll — 直接呼叫會失敗並出現「not loaded」。
// 步驟 1:載入延遲工具
…
[內容因翻譯而截斷]