Renommer des images en lot avec modèle et numérotation
Transformez une liste ordonnée de noms d’images en une séquence claire et cohérente avant de renommer, téléverser, archiver ou publier les fichiers réels.
Lancer gratuitement
Indiquez un modèle comportant un marqueur de compteur, choisissez le numéro de départ et obtenez une correspondance explicite entre chaque ancien et nouveau nom. L’outil peut préserver l’extension d’origine, reprendre le nom de base et compléter les numéros pour un tri naturel. Il calcule uniquement des noms : il ne lit, ne téléverse, ne déplace et ne modifie aucune image. Vous pouvez donc vérifier facilement les changements proposés avant toute opération sur les fichiers.
Construisez un modèle de nommage explicite
Un renommage en lot efficace commence par un modèle qui décrit la collection plutôt que l’appareil photo ou le téléphone qui l’a créée. Placez {counter} à l’endroit du numéro de séquence, par exemple produit-rouge-{counter}{ext}. Utilisez {counter:3} pour imposer une largeur minimale fixe et produire 001, 002 et 003. La largeur peut compter entre un et vingt chiffres, et un nombre déjà plus long n’est jamais tronqué. Ajoutez {ext} pour conserver exactement l’extension de chaque fichier source, y compris sa casse, ou {name} si le nom de base original doit rester dans le résultat. Un même marqueur peut apparaître plusieurs fois. Le texte littéral demeure inchangé. Le résultat étant un nom de fichier et non un chemin, les barres obliques ou inverses générées sont refusées. Le modèle ne peut donc pas changer silencieusement de répertoire. Examinez la correspondance obtenue avant de l’appliquer avec un gestionnaire de fichiers, un script, une chaîne de ressources ou une médiathèque.
Maîtrisez l’ordre, la numérotation et les doublons
La liste d’entrée fixe l’ordre. Le premier fichier reçoit la valeur de start, le deuxième l’entier suivant, puis le traitement continue sans trier les noms ni interpréter les dates qu’ils pourraient contenir. Le résultat reste ainsi prévisible si votre liste respecte déjà l’ordre d’une séance, d’un tableur, d’une sélection ou d’une séquence éditoriale. La valeur de départ est 1 par défaut ; 0 et les autres entiers sûrs non négatifs conviennent également aux systèmes numérotés à partir de zéro. Chaque nom produit fait l’objet d’une recherche de collision. Un modèle sans compteur est autorisé si les autres marqueurs créent encore des noms distincts ; {name}-valide{ext} reste généralement unique. Si ce modèle donne toutefois le même nom à deux images, la requête échoue et signale l’absence de compteur. Les modèles dotés d’un compteur sont aussi contrôlés, car des entrées répétées ou un modèle ignorant des différences importantes peuvent exceptionnellement provoquer une collision. En cas d’échec, aucune correspondance partielle n’est renvoyée : toute réponse réussie constitue un plan complet.
Exploitez la correspondance sans risque
Cette capacité calcule un plan de renommage sans toucher volontairement aux fichiers. Chaque résultat associe le nom d’origine au remplacement proposé afin qu’une personne ou un programme en aval puisse examiner tous les changements. Cette séparation convient aux photographes préparant des planches-contact, aux équipes de commerce électronique normalisant leurs ressources, aux développeurs classant des jeux d’essai et aux archivistes créant des séquences durables. Conservez {ext} si un lot mélange des extensions JPEG, PNG, WebP ou des casses différentes : le marqueur copie le suffixe de chaque source au lieu d’imposer un format. Renommer ne convertit pas les données de l’image ; remplacer littéralement une extension ne change donc pas le format sous-jacent. Les entrées doivent être des noms, pas des chemins, et sont limitées à 255 caractères. Un lot peut contenir jusqu’à 10,000 éléments. Pour effectuer l’opération, transmettez la correspondance à un outil capable de détecter les destinations existantes et de procéder en deux étapes lorsque les noms se chevauchent. Une requête API coûte $0.002. Une entrée identique rend toujours le même résultat, sans transfert, réseau, hasard ni horloge.
Cas d’usage
Ordonner une séance photo
Remplacez les noms créés par l’appareil par une série ordonnée et complétée, tout en gardant chaque extension d’origine.
Normaliser des images de produits
Créez des noms prévisibles pour une boutique à partir d’une liste ordonnée d’angles et de variantes.
Prévisualiser le renommage d’archives
Générez puis vérifiez la correspondance complète entre anciens et nouveaux noms avant toute modification.
Questions fréquentes
Quels marqueurs de compteur sont acceptés ?
Employez {counter} pour un nombre brut ou {counter:width}, par exemple {counter:4}, pour atteindre une largeur minimale avec des zéros.
Comment conserver l’extension de chaque image ?
Insérez {ext} dans le modèle. Il copie la dernière extension avec son point initial et sa casse d’origine.
L’outil renomme-t-il ou téléverse-t-il mes images ?
Non. Il fournit uniquement une correspondance déterministe entre chaque nom initial et le nouveau nom proposé.
Que se passe-t-il si deux nouveaux noms sont identiques ?
La requête entière échoue. Si le modèle ne possède aucun compteur, l’erreur vous invite précisément à en ajouter un.
Quel est le coût d’une requête API ?
Chaque requête coûte $0.002, que le compteur commence à zéro ou utilise un remplissage.
Pour les développeurs — accès API
Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.
Endpoint
Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.
Appeler depuis votre stack
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)Exemple de requête
{
"filenames": [
"IMG_4102.JPG",
"IMG_4103.JPG",
"IMG_4104.PNG"
],
"pattern": "gallery-{counter:3}{ext}"
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "image.batch_rename_pattern",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Limites
max_items | 10000 |
max_filename_chars | 255 |
max_pattern_chars | 255 |
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |