画像ファイル名をパターンと連番で一括変更
画像を実際に改名、アップロード、保存、公開する前に、順序付きのファイル名一覧から統一された新しい名前を作成できます。カウンターのプレースホルダーを含むパターンと開始番号を指定すると、元の名前と新しい名前の対応表が返されます。元の拡張子やベース名を残し、自然に並ぶよう番号をゼロ埋めすることも可能です。この機能が行うのは名前の計算だけです。画像の読み取り、送信、移動、変更は行いません。そのため、ファイルを操作する前に提案内容を安全にご確認いただけます。
無料で実行
分かりやすい画像命名パターンを作成します
一括改名では、撮影に使ったカメラや端末ではなく、画像コレクションの内容を表すパターンを選ぶと管理しやすくなります。連番を入れる位置には {counter} を指定し、たとえば product-red-{counter}{ext} のように記述します。最小桁数を固定して 001、002、003 のようにしたい場合は {counter:3} をお使いください。桁数は1から20まで指定でき、指定幅より大きい番号が切り捨てられることはありません。各元ファイルの拡張子を大文字・小文字も含めて保持するには {ext} を、元のベース名も結果に含めるには {name} を追加します。同じプレースホルダーを複数回使うこともでき、通常の文字はそのまま残ります。結果はパスではなくファイル名であるため、スラッシュとバックスラッシュが生成されるパターンは拒否されます。これにより、意図せず保存先ディレクトリが変わることを防げます。返された対応表は、ファイル管理ソフト、スクリプト、アセット処理、メディア管理ツールで適用する前にご確認ください。
順序、番号、重複を確実に管理します
番号は入力一覧の順番に割り当てられます。最初のファイルには start の値、次のファイルには次の整数が使われ、名前の並べ替えや名前に含まれる日付の解釈は行われません。撮影順、表計算シートの行順、選択順、編集上の順序で一覧を準備しておけば、結果もその順序を正確に反映します。開始値の初期設定は 1 ですが、ゼロ起点のシステムでは 0 などの負でない安全な整数も指定できます。生成された名前はすべて重複検査の対象です。ほかのプレースホルダーで一意になる場合、カウンターのないパターンも利用できます。たとえば {name}-approved{ext} は通常、元の名前ごとに異なる結果になります。ただし、2つの画像に同じ名前が生成される場合はリクエストが失敗し、カウンターがないことが示されます。カウンター付きの場合も、重複入力などによる衝突を検査します。検証に失敗した際は途中までの対応表を返さないため、成功レスポンスは完全な改名計画として扱えます。
実際の作業で対応表を安全に利用します
この機能は改名計画だけを計算し、ファイル自体には意図的に触れません。結果では元の名前と提案された新しい名前が対になっているため、人または後続プログラムがすべての変更を確認できます。この分離は、コンタクトシートを準備する写真家、商品素材を統一するEC担当者、テスト用ファイルを整理する開発者、安定した連番を作るアーカイブ担当者に役立ちます。JPEG、PNG、WebP、または大文字・小文字が異なる拡張子が混在するときは {ext} を残してください。各元ファイルの末尾が個別にコピーされ、1つの形式が強制されることはありません。改名は画像データの変換ではないため、拡張子の文字だけを変えても実際の形式は変わりません。入力できるのはパスではなく255文字以内のファイル名で、1回に最大10,000件まで処理できます。実際の改名には、既存の移動先を検出し、名前が重なる場合に2段階で処理できるツールをご利用ください。API リクエストの料金は $0.002 です。同じ入力からは、アップロード、通信、乱数、時刻に依存せず、常に同じ結果が得られます。
活用例
撮影画像を連番に整理
カメラが付けた名前をゼロ埋めした順序付きの名前に変え、各画像の元の拡張子を保持できます。
商品画像名を統一
商品アングルやバリエーションの順序付き一覧から、ECサイトで予測しやすい素材名を作成できます。
アーカイブ改名を事前確認
保存ファイルを変更する前に、古い名前から新しい名前への完全な対応表を作成して確認できます。
よくある質問
どのカウンタープレースホルダーを使えますか?
ゼロ埋めしない番号には {counter}、最小桁数までゼロ埋めする場合は {counter:width}、たとえば {counter:4} をお使いください。
各画像の拡張子を残すにはどうしますか?
パターンに {ext} を入れてください。先頭のピリオドと元の大文字・小文字を含む最後の拡張子がコピーされます。
画像の改名やアップロードも実行されますか?
いいえ。元の各ファイル名から提案された新しい名前への決定的な対応表のみを返します。
新しい名前が2件で同じになった場合はどうなりますか?
リクエスト全体が失敗します。パターンにカウンターがない場合は、追加が必要であることをエラーで明示します。
API リクエストの料金はいくらですか?
カウンターの開始がゼロでもゼロ埋めを使う場合でも、1リクエストにつき $0.002 です。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/image/batch-rename-pattern \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"filenames":["IMG_4102.JPG","IMG_4103.JPG","IMG_4104.PNG"],"pattern":"gallery-{counter:3}{ext}"}'const res = await fetch("https://api.kit.forhosting.com/image/batch-rename-pattern", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"filenames": [
"IMG_4102.JPG",
"IMG_4103.JPG",
"IMG_4104.PNG"
],
"pattern": "gallery-{counter:3}{ext}"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/image/batch-rename-pattern",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"filenames": [
"IMG_4102.JPG",
"IMG_4103.JPG",
"IMG_4104.PNG"
],
"pattern": "gallery-{counter:3}{ext}"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/image/batch-rename-pattern", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"filenames":["IMG_4102.JPG","IMG_4103.JPG","IMG_4104.PNG"],"pattern":"gallery-{counter:3}{ext}"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"filenames":["IMG_4102.JPG","IMG_4103.JPG","IMG_4104.PNG"],"pattern":"gallery-{counter:3}{ext}"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/image/batch-rename-pattern", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"filenames": [
"IMG_4102.JPG",
"IMG_4103.JPG",
"IMG_4104.PNG"
],
"pattern": "gallery-{counter:3}{ext}"
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "image.batch_rename_pattern",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
制限
max_items | 10000 |
max_filename_chars | 255 |
max_pattern_chars | 255 |
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |